понедельник, 9 ноября 2009 г.

PHP и файлы за пределами директории сервера

Недавно возникла необходимость установки и настройки CMS Moodle, которая хранит свои данные за пределами отведенной ей папки (доступной из интернета). Возник вопрос о возможности доступа PHP-скрипта к файлам вне серверной директории.

PHP, установленный со стандартными конфигами, а у меня такой и стоял, представляет опасность вашей машине. По стандарту PHP сконфигурирован так, что сами скрипты вправе обращаться к любому файлу за пределами директории веб-сервера (/var/www).

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

Чтобы этого не случилось достаточно правильно сконфигурировать файл php.ini (/etc/php5/apache2/php.ini).
Необходимо раскоментить директиву open_basedir и придать ей нужное значение. После знака равно указывается директория из которой скрипт не может выходить во время своего исполнения. Для указания нескольких директорий следует разделять их знаком двоеточия. А для того чтобы разрешить скриптам доступ к текущей директории (где они в данный момент находятся) и всем директориям ниже по уровню следует придать директиве значение "."

;разрешить доступ к директориям /var/www и /var/webdata/
open_basedir=/var/www:/var/webdata/

или

;разрешить доступ к текущей директории и всем директориям ниже
open_basedir=.

Комментариев нет:

Отправить комментарий