Безопасность PHP+MYSQL+Apache
Итак был вопрос ......... Есть у нас
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>
--------------------------------------------------------------------------------
Автор: Дмитрий Рождественский
Источник: articles.org.ru
|