Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Безопасность PHP+MYSQL+Apache

Источник: realcoding.net

Есть у нас 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=твое@мыло;
?>

далее создаем файл config.php
file config.php

<?
function
db_err($handle, $message) {
printf(%s: %d: %sn, $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);

}

?>

потом выносим эти файлы за пределы сервера, и наконец подключаем эти файлы в
тех файлах где будем работать с базой.

<?
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)

часто приходится хранить всякие везде-используемые данные/функции в отдельных
файлах, и потом подключать, используя include[_once]/require[_once].

но эти файлы обычно не парсятся сервером, т.е. их можно смотреть через
браузер, этого мы и хотим избежать. давать таким файлам расширение .php не очень правильно, т.к. их можно вызвать через браузер, и, хотя мы и не увидим содержимое, но, наверняка, у нас начнут вылазить какие-либо ошибки php,
т.к. код внутри файлов обычно расчитан на исполнеие в определенном окружении(наличие коннекта к базе/чтение файлов/определенные значения констант/переменных).

есть 2 выхода по сути похожих
1. поместить все .inc файлы за пределами document_root apache
2. написать .htaccess чтобы запретить доступ ко всем файлам с определенными
расширениями

Пример.

<filesmatch .(incsql...другие расширения...)$>
order deny,allow
# запретить доступ отовсюду
deny from all
#разрешить доступ с вашего ip(если он у вас, конечно, статический)
allow from <ваш ip>
</
filesmatch>



Похожие статьи:
- Синтаксис .htaccess
- Состаривание молодых
- Стеклянный шарик
- Неон в стеклянной трубке
- Металлическое кольцо
- Трехмерные здания
- Форма обратной связи
- Ключевые слова - теория
- Отправка писем при помощи PHP-Прикрепление файла
- Обработка ошибок в PHP
- Как правильно раскрутить сайт?
- Защити себя сам - Firewall
- Предварительная загрузка рисунков (preload) и перекат (rollover)


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]