Итак был вопрос ......... Есть у нас php скрипт, который обращается к mysql БД. Если мы впишем в скрипт, условно говоря, root mysql'я, то можем ли мы рассчитывать на безопасность действий (адекватность и однозначность написанных операций) с БД? Можем ли мы рассчитывать на безопасное хранение пароля в пхп-скрипте? ........ 1) Лучше создать еще одного пользователя в базе mysql и урезать ему права.. - 2) Все поключения к базе из php осуществлять через так называемые конфигурационные файлы. Отсюдова подробнее. Итак для доступа в mysql через php создаем файлы дополнительные (конфигурационные) файлы setup.php & config.php file setup.php <? $dbname="dbname"; $dbuser="dbuser"; $dbpass="dbuserpass"; $dbserver="dbserver"; $adminmail="твое\@мыло"; ?> enf of file далее создаем файл config.php file config.php <? function db_err($handle, $message) { printf("%s: %d: %s\n", $message, mysql_errno($handle),mysql_error($handle)); die(); } function db_connect() { global $dbname,$dbuser,$dbpass,$dbserver; $dbh = mysql_connect($dbserver,$dbuser,$dbpass); if(!$dbh) { db_err($dbh, "mysql_connect"); } $res = mysql_select_db($dbname); if(!$res) { db_err($dbh, "mysql_select_db"); } return($dbh); } ?> end of file потом выносим эти файлы за пределы сервера, и наконец подключаем эти файлы в тех файлах где будем работать с базой. <? require("ваш_путь/setup.php"); require("ваш_путь/config.php"); ?> и в конечном итоге получаем красивый и вполне безопастный код. $dbc=db_connect(); $query = "select ................."; $result = mysql_query($query,$dbc); -------------------------------------------------------------------------------- Как защитить /etc/passwd от просмотра? phpclub В конфигурационном файле сервера apache, в контексте соответствующей директивы <directory> указать(или в .htaccess): php_admin_value open_basedir /home/null/www/htdocs php_admin_value doc_root /home/null/www/htdocs -------------------------------------------------------------------------------- инклуды (.inc) antoxa часто приходится хранить всякие везде-используемые данные/функции в отдельных файлах, и потом подключать, используя include[_once]/require[_once]. но эти файлы обычно не парсятся сервером, т.е. их можно смотреть через браузер, этого мы и хотим избежать. давать таким файлам расширение .php не очень правильно, т.к. их можно вызвать через браузер, и, хотя мы и не увидим содержимое, но, наверняка, у нас начнут вылазить какие-либо ошибки php, т.к. код внутри файлов обычно расчитан на исполнеие в определенном окружении(наличие коннекта к базе/ чтение файлов/определенные значения констант/переменных). есть 2 выхода по сути похожих 1. поместить все .inc файлы за пределами document_root apache 2. написать .htaccess чтобы запретить доступ ко всем файлам с определенными расширениями Пример. <filesmatch "\.(inc|sql|...другие расширения...)$"> order deny,allow # запретить доступ отовсюду deny from all #разрешить доступ с вашего ip(если он у вас, конечно, статический) allow from <ваш ip> </filesmatch>
|