PHP 8.4.2 Released!

Вариант 3: включение директив doc_root или user_dir

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

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

Корневой каталог для PHP-скриптов устанавливают в файле конфигурации PHP через директиву doc_root или через переменную окружения PHP_DOCUMENT_ROOT. При установке корневого каталога для PHP-скриптов CGI-версия двоичного файла PHP сформирует путь к файлу, который требуется открыть, на основе значения директивы doc_root и пути, который указали в запросе. Это гарантирует, что скрипты за пределами этого каталога, за исключением каталога user_dir, не выполнятся.

Другая директива, которая помогает создавать безопасные пути к файлам, — user_dir. Путём к файлу, который требуется открыть, управляет только директива doc_root, если директиву user_dir не установили. При запросе URL-адреса наподобие http://my.host/~user/doc.php обработчик откроет файл с названием ~user/doc.php (да, название каталога начинается с символа ~) в каталоге, который установили в директиве doc_root, а не файл в домашнем каталоге пользователей.

Но если для директивы user_dir установили значение наподобие public_php, то запрос URL-адреса http://my.host/~user/doc.php откроет файл doc.php, который лежит в домашнем каталоге пользователя в директории public_php. Приведём пример. Обработчик выполнит файл /home/user/public_php/doc.php, если домашний каталог пользователя /home/user.

PHP разворачивает значение директивы user_dir независимо от настройки директивы doc_root, поэтому управлять корневым каталогом документов веб-сервера и каталогом пользователя разрешается по отдельности.

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top