Защита папок от выполнения сторонних скриптов
Как запретить выполнение PHP в уязвимых директориях сайта.
Одна из главных угроз для сайта — PHP-шеллы: вредоносные скрипты, которые злоумышленник загружает на сервер и использует для изменения файлов, чтения конфигурационных данных или получения прямого доступа к базе данных.
Ключевой момент: шеллы можно залить только в папки, доступные для записи. А значит, если в такой папке не нужно выполнение PHP-кода — его стоит явно запретить. Под защиту в первую очередь попадают директории вроде /images/, /uploads/, /templates/ и им подобные.
Способ 1. Для серверов в режиме CGI, FastCGI, suPHP или DSO (Apache)
Создайте файл .htaccess в папке, где нужно запретить выполнение PHP. Если файл уже существует — добавьте следующий код в его начало:
<FilesMatch "\.([Pp][Hh][Pp]|[Cc][Gg][Ii]|[Pp][Ll]|[Ph][Hh][Tt][Mm][Ll])\.?.*">
Order allow,deny
Deny from all
</FilesMatch>
Этот код блокирует прямое обращение к PHP-файлам, находящимся в защищённой папке.
Способ 2. Для серверов в режиме mod_PHP (DSO — Apache PHP)
Этот способ подходит для серверов, на которых разрешены директивы php_flag и php_value. Создайте файл .htaccess в нужной папке (или добавьте в существующий) следующую строку:
php_flag engine off
Эта директива полностью отключает PHP-интерпретатор для данной папки и всех вложенных директорий. Даже если злоумышленнику удастся загрузить вредоносный PHP-файл — он просто не запустится: сервер откажется его выполнять.
Помощь
Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!