Ограничиваем каталог, в который можно получить доступ с помощью PHP

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

Для повышения безопасности сайтов следует запрещать PHP приложениям доступ к файлам, находящимся за пределами рабочего каталога сайта.

Далее вы узнаете, как это сделать.

Проблема решается с помощью опции open_basedir в php.ini. В этой опции можно указать каталог, выше которого PHP приложения не смогут получить доступ. Не забудьте / на конце, т.к. в PHP версий до 5.2.16 и 5.3.4 значение использовалось как префикс — подробнее в документации.

Но в случае, если на сервере находятся несколько сайтов, целесообразно запретить иметь доступ из одного сайта к файлам другого. Для Apache сервера, сделать это можно, добавив диррективу php_admin_value open_basedir в конфигурацию хоста:

<VirtualHost *:80>                                                              
        ...                              
        <Directory /var/www/somesite/web/>                                
                ...                                  
                php_admin_value open_basedir /tmp:/var/www/somesite/
                ...                                                  
        </Directory>                                                            
        ...              
</VirtualHost>

Полезные ссылки

Комментарии

  1. хостинг пишет:

    Отлично, большое спасибо за решение, а то я все пытался через .htaccess реализовать.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *