Очень часто, при работе со старыми сайтами, возникает ситуация, когда движок сайта стал слишком уязвим, а обновить его не представляется возможным.
Тогда, мы начинаем искать альтернативные методы минимизации дыр на сайте, стараясь оставить его в рабочем состоянии на максимально длительный срок.
Самой частой уязвимостью становится — возможность хакеру закачивать директорию доступную для записи, где должны хранится картинки (например uploads) разнообразные php шеллы и бэкдоры.
Значит, наша задача: запретить php интерпретатору обрабатывать файлы в этих директориях, либо запретить доступ к файлам .php в этих папках.
В зависимости от web сервера делаем следующее:
Apache
У нужной нам папке создаем (или добавляем в уже созданный) файл .htaccess с нужными правилами в нем:
# Разрешить доступ только к файлам определенного расширения <FilesMatch "\.(jpg|png|gif)$|^$"> Order deny,allow Allow from all </FilesMatch> # Выключим php php_flag engine 0 # для всех опасных файлов сделаем тип html RemoveHandler .* AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp
Nginx
В файл конфигурации nginx добавляем:
location ~* ^/(images)/.+\.(php|php3|php4|php5|phtml|phps|pl|pm)$ { deny all; }
Где images — папка, в которой нужно запретить выполнение скриптов.