Обеспечение безопасности PHP на Apache



Запустите протокол «phpinfo ()» и проверьте линию командой «open_basedir». С помощью этой команды вы можете определить базовый каталог для всех пользователей. После установки этого значения, они больше не будут иметь возможность открывать файлы вне этой корневой папки или ее подкаталогов как, например, «C:\Windows».

Если у вас есть другие структурные каталоги, определите их в качестве базового каталога командой «www_root». Однако один пользователь также сможет читать и изменять файлы другого пользователя. Это необходимо предотвратить.

К сожалению, не существует опций в файле «php.ini» для того, чтобы запретить одному пользователю получать доступ к данным другого.

Но есть один интересный способ, если PHP работает на Apache. В «phpinfo ()» вы найдете две колонки: «Основное Значение» и «Локальное значение». Первое является значением в «php.ini». Второе — это значение, которое определяется в процессе работы сервера.

Если основное значение невелико в цифровом эквиваленте, то оно может быть изменено в сценарии при помощи команды «ini_set ()». Это не относится к «open_basedir», потому что это значение является критическим для безопасности, и может быть изменено только администратором.

В Apache конфигурационный файл «httpd.conf» можно указать в справочнике под локальным значением «open_basedir».


Другие настройки PHP



С помощью установки «disable_functions» в файле «php.ini», необходимо отключить функции, которые потенциально опасны.
Тщательно обдумывайте каждое свое действие. Отключение функции означает, что кое-какие скрипты перестанут работать.

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

Не верьте в то, что одной функции «safe_mode = On» будет достаточно. Она может отключить некоторые полезные функции и не решить проблему безопасности, описанную выше. Безопасный режим не рекомендуется в PHP 5.3.0 и удаляется в PHP 6.0.0.

Проблемы защиты



Есть несколько ошибок, которые веб-разработчик может допустить и сделать сайт небезопасным.

Например, если вы создаете свой блог и позволяете пользователям загружать изображения, это может быть серьезной опасностью, когда код написан новичком. Есть несколько ошибок, которые программист может сделать на странице входа и т. д. Одна из самых распространенных – отсутствие запрета на загрузку вредоносных алгоритмов.

Важным моментом является то, что один небезопасный сайт на общественном хостинге является угрозой для всего сервера. Также установка Open Source проектов, как, например, PHP-Nuke может быть рискованной. Несколько уязвимых мест в подобных проектах уже было обнаружено.