Справка веб-мастера     Справочник web-мастера и программиста
  PHP       Интернет       Беб-дизайн       Безопасность       Javascript     Информеры     Game      
          Игра шарики





Как повысись безопасность вашего конфигурационного файла?



Как повысить безопасность вашего конфигурационного файла, который содержит логины и пароли для доступа к базам данных MySql? Ккак предотвратить нарушение конфиденциальности?

Этот конфигурационный файл с секретными данными ( хост, имя пользователя, пароль) для подключения к базе данных MySQL не должен попадаться на глаза посторонним. Он обычно расположен все папки public_html, вне корневого каталога документов, чтобы запретить доступ к нему веб-сервером. Правильно настроенный веб-сервер апачи имеет право доступ на чтение только к папке public_html.

Файл включается в код php сценария инструкциями include( ) и require() с указанием полного (абсолютного) пути:
include ("/home/polzovatel/secret/mysqlaccess.php");

Предположим, что не включен безопасный режим (safe_mode = off ) и сценарий, принадлежащий пользователю Мэри (которая является пользователем Вашего сервера), вызывает инструкцию include( ), которая пытается подключить секретный php файл, принадлежащий Вам и ее вызов НЕ завершится неудачей. То есть в сценарий постороннего пользователя поступят Ваши важные и секретные данные.

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

Пример:

$prvr1=$_SERVER["DOCUMENT_ROOT"]; // DOCUMENT_ROOT - /home/polzovatel/www/public_html
$prvr2=$_SERVER["HTTP_HOST"]; // HTTP_HOST - www.you_host_name.ru
if( !stristr($prvr1,"polzovatel") || !stristr($prvr2,"you_host_name") ) die();

Безопасный режим - safe_mode

При включении безопасного режима (safe_mode) ограничивается использование отдельных потенциально опасных возможностей РНР. Для включения или выключения безопасного режима параметру safe_mode присваивается значение on или off. Механизм ограничения основан на сравнении идентификатора пользователя (UID) выполняющегося сценария с идентификатором пользователя того файла, к которому этот сценарий пытается обратиться. Если идентификаторы совпадают, функция выполняется; в противном случае попытка завершается неудачей.

При включении безопасного режима действуют следующие ограничения:

  • Функции ввода/вывода ( fopen ( ), filе( ) и include ( ) ) работают только с файлами, принадлежащими владельцу сценария.
  • Новые файлы создаются только в каталогах, принадлежащих владельцу сценария.
  • Запуск внешних сценариев функциями popen( ), system( ) или ехес( ) разрешается в том случае, если запускаемый сценарий находится в каталоге, определяемом параметром safe_mode_exec_dir.
  • Аутентификация HTTP становится более жесткой, поскольку в ней также учитывается UID аутентифицирующего сценария.
  • Имя пользователя, использованное при подключении к серверу MySQL, должно совпадать с именем владельца файла, вызывающего mysql_connect( ).

Функции, выполнение которых ограничивается в безопасном режиме: chgrp include require chmod link rmdir chown passthru symlink exec popen system fopen readfile unlink file rename.







  Copyright © King-dom.ru, 2008-2013       Разработка сайта SoftHolm.com