Как известно наибольшую угрозу для сайта представляют собой залитые злоумышленником на сервер PHP шеллы. Что это такое? Это PHP скрипты которые могут выполняться на вашем сервере, соответственно производить какие-либо изменения в файлах доступных для записи или могут, например читать содержимое конфигурационных данных и соответственно получать прямой доступ к базе данных. Каким образом могут попадать данные шеллы на ваш сервер? При обнаружении какой либо уязвимости в скрипте (CMS), или сторонних модулях, или вообще при наличии других уязвимых сторонних скриптов в вашей учетной записи, А так при плохом фильтровании загружаемых файлов (например в место картинки могут загрузить испольняемый файл php шел, и выполнять, типо http://moysait.ru/uploads/script-shell.php). Главная особенность заключается в том, что шеллы можно залить не в любые папки на сервере, а лишь в папки доступные для записи на сервере.
В папках, в которых не нужно выполнение php кода, например в таких как /images/ /uploads/ /templates/ и т.п., то лучше всего запретить в них выполнения PHP файла.
Это можно сделать просто.
На серверах которые работают в режимах 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 файлам, находящимся в этих папках.
На серверах которые работают в режиме mod_PHP (DSO - Apache PHP), там где не запрещены директивы php_flag, php_value ...
создать файл .htaccess в папке в которой вы хотите запретить выполнение php кода, если этот файл уже есть то в начале добавить следующий код:
php_flag engine off
Данная строчка отключает использование PHP интерпретатора при попытке обращения к PHP файлам находящимся в этих папках, а также находящимся во всех вложенных папках. Поэтому даже в случае заливки в эти папки файлов со зловредным PHP кодом, они становятся для злоумышленника совершенно бесполезными, т.к. попросту не будут запускаться и выполнятся сервером.