Главная страница / Советы / Защита папок скрипта от запуска сторонних скриптов
октябрь 23 2010

Защита папок скрипта от запуска сторонних скриптов

celsoft 23 октября 2010 Советы 50 098
Дорогие друзья,

в этой небольшой статье мы хотим рассказать вам о том как, как вам можно повысить безопасность вашего сайта. Как известно наибольшую угрозу для сайта представляют собой залитые злоумышленником на сервер PHP шеллы. Что это такое? Это PHP скрипты которые могут выполняться на вашем сервере, соответственно производить какие-либо изменения в файлах доступных для записи или могут, например читать содержимое конфигурационных данных и соответственно получать прямой доступ к базе данных. Каким образом могут попадать данные шеллы на ваш сервер? При обнаружении какой либо уязвимости в скрипте, или сторонних модулях, или вообще при наличии других уязвимых сторонних скриптов на сервере, или серверного ПО. Главная особенность заключается в том, что шеллы можно залить не в любые папки на сервере, а лишь в папки доступные для записи на сервере, и в DataLife Engine такими папками являются папки /uploads/ и /templates/, а также все вложенные в них папки. Данные папки должны иметь права на запись, т.к. вы в них заливаете посредством скрипта легальный контент, файлы, картинки, редактируете в админпанели шаблоны и прочее. И как правило в эти папки производится загрузка шеллов при обнаружении злоумышленником какой либо бреши на сервере в любом скрипте, даже не имеющем отношения к DataLife Engine. Можно ли защитить эти папки, в случае попадания в них зловредного PHP файла, ведь нельзя запретить доступ к этим папкам? Можно, и достаточно не сложно.

Итак, вам необходимо разместить в папках /uploads/ и /templates/ файл .htaccess со следующим содержимым:
php_flag engine  off

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

К сожалению далеко не все хостинг провайдеры позволяют управлять через .htaccess данным параметром, но для таких сайтов решение также существует, поэтому если на вашем сервере не работает вышеуказанный способ, то разместите в этих же папках .htaccess с содержимым:
<FilesMatch "\.([Pp][Hh][Pp]|[Cc][Gg][Ii]|[Pp][Ll]|[Ph][Hh][Tt][Mm][Ll])\.?.*">
   Order allow,deny
   Deny from all
</FilesMatch>

Данный код запрещает прямое обращение к PHP файлам, находящимся в этих папках.

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

Комментарии

  1. fmnokia (Клиенты)

    23 октября 2010 15:45 20 комментариев
    Неплохо бы в стандартный дистрибутив второй вариант поместить.
  2. Drug_4e (Клиенты)

    23 октября 2010 16:04 11 комментариев
    Спасибо, кэп!
  3. celsoft (Администраторы)

    23 октября 2010 16:35 3 444 комментария
    fmnokia,
    Да, в будущем это также войдет в дистрибутив
  4. GrayZOR (Клиенты)

    23 октября 2010 18:56 5 комментариев
    winked круто. спс!
  5. razer85 (Клиенты)

    23 октября 2010 19:02 35 комментариев
    а как узнать какой вариант будет работать?
  6. Adobe (Клиенты)

    23 октября 2010 20:30 42 комментария
    будем знать wink
  7. celsoft (Администраторы)

    23 октября 2010 21:08 3 444 комментария
    Цитата: razer85
    а как узнать какой вариант будет работать?

    просто поместите в эти папки какой либо PHP файл и попробуйте запустить
  8. razer85 (Клиенты)

    23 октября 2010 22:25 35 комментариев
    Цитата: celsoft
    просто поместите в эти папки какой либо PHP файл и попробуйте запустить


    С первым вариантом браузер предлогал сохранить файл, а с вторим при обращении к файлу ошибку выдал

    Forbidden

    You don't have permission to access /templates/preview.php on this server.


    Значит у меня не работает вариант 1 ?
  9. dlespam (Клиенты)

    23 октября 2010 23:13 45 комментариев
    Цитата: razer85
    Значит у меня не работает вариант 1 ?

    Работает, так оно и должно быть, первый вариант просто будет отдавать файл без выполнения.
  10. RedRoll (Посетители)

    24 октября 2010 02:58 17 комментариев
    а папка backup?
  11. DeeMon (Посетители)

    24 октября 2010 08:15 54 комментария
    Цитата: celsoft
    Да, в будущем это также войдет в дистрибутив

    А что сейчас мешает включить и обновить дистрибутив? belay
    И я так понимаю для гарантии лучше 2-ой вариант прописать...
  12. DeeMon (Посетители)

    24 октября 2010 09:02 54 комментария
    И ещё, файл .htaccess в папке uploads/files/ я так понял должен теперь выглядеть так:
    <FilesMatch "\.(php|php3|php4|php5|php6|phtml|phps)$|^$">
    Order allow,deny
    Deny from all
    </FilesMatch>

    <FilesMatch "\.(avi|mp3|mp4|flv|swf|wmv|m4v|m4a|mov|3gp|f4v)$|^$">
    Order deny,allow
    Allow from all
    </FilesMatch>

    Правильно?
    Ещё по поводу папки templates- не все ставят на неё и её подпапки права 777. Выходит имеет смысл туда закидывать его если только права 777.
  13. WWW.ZEOS.IN (Клиенты)

    24 октября 2010 10:03 32 комментария
    Да, надо добавить в следующие версии DLE bully
  14. celsoft (Администраторы)

    24 октября 2010 10:57 3 444 комментария
    Цитата: DeeMon
    И ещё, файл .htaccess в папке uploads/files/ я так понял должен теперь выглядеть так:

    Не нужно трогать файл в этой папке.
    Цитата: RedRoll
    а папка backup?

    там уже находится запрет доступа к этой папке
  15. ExTreme72 (Посетители)

    24 октября 2010 11:03 3 комментария
    А вот если у меня права на папки 700, а на файлы 600 это нормально ?
    Просто если ставить права 777 или 644 то сайт перестаёт работать. Точнее не грузит вообще то что находится в этих папках
  16. film4ik (Клиенты)

    24 октября 2010 15:05 3 комментария
    К сожалению далеко не все хостинг провайдеры позволяют управлять через .htaccess данным параметром


    А как на сервере сделать так чтобы можно было управлять данным параметром через .htaccess?
  17. celsoft (Администраторы)

    24 октября 2010 16:30 3 444 комментария
    Цитата: ExTreme72
    А вот если у меня права на папки 700, а на файлы 600 это нормально ?
    Просто если ставить права 777 или 644 то сайт перестаёт работать. Точнее не грузит вообще то что находится в этих папках

    да, какие права могут быть определяются хостинг провайдером в настройках сервера.
    Цитата: film4ik
    А как на сервере сделать так чтобы можно было управлять данным параметром через .htaccess?

    это вам нужно уточнять у вашего хостинг провайдера. Зависит от ПО вашего сервера
  18. razer85 (Клиенты)

    24 октября 2010 17:12 35 комментариев
    а 2 вариант тоже запрещает использовать php во всех вложенных папках /uploads/ и /templates ?
  19. celsoft (Администраторы)

    24 октября 2010 17:25 3 444 комментария
    razer85,
    да, действия правил всегда распространяются на вложенные папки, если правило не отменяется
  20. film4ik (Клиенты)

    24 октября 2010 18:29 3 комментария
    Цитата: celsoft
    это вам нужно уточнять у вашего хостинг провайдера. Зависит от ПО вашего сервера

    Свой сервер. CentOS 5.5. Искал в инете что ничего не нашел как разрешить данное правило. Может кто в курсе?
  21. valet (Посетители)

    24 октября 2010 20:07 29 комментариев
    Спасибо, добавил
  22. celsoft (Администраторы)

    24 октября 2010 20:53 3 444 комментария
    film4ik,
    Операционная система тут не имеет никакого отношение, .htacess это управление апачем, и по умолчанию никаких запретов использования нет. Кстати PHP должен работать как модуль апача, а не как FastCGI, т.к. это управление через апач. Ну и собственно наличие Апача также обязательно.
  23. kabbalahportal.org (Посетители)

    25 октября 2010 09:54 36 комментариев
    Не очень годится как универсальное правило.
    Например есть движок, в котором есть папка - cache, и она должна быть для записи.
    НО! В ней исполняются именно файлы - .php
    И в таком случае ваш метод не пригоден? belay
  24. pray (Клиенты)

    25 октября 2010 10:17 24 комментария
    Это все конечно хорошо, но, после прописывания второго варианта, в /templates/, перестала работать реклама от Яндекса.
  25. celsoft (Администраторы)

    25 октября 2010 11:19 3 444 комментария
    Цитата: pray
    Это все конечно хорошо, но, после прописывания второго варианта, в /templates/, перестала работать реклама от Яндекса.

    Она у вас что на PHP? Данное правило запрещает только доступ к PHP файлам при попытке их прямого запуска, и не более того.
    Цитата: kabbalahportal.org
    Не очень годится как универсальное правило.
    Например есть движок, в котором есть папка - cache, и она должна быть для записи.
    НО! В ней исполняются именно файлы - .php
    И в таком случае ваш метод не пригоден?

    Вы пробовали когда нибудь обратится напрямую к этим файлам? У вас не совсем верное понимание того для чего эти правила и что они запрещают. Эти правила блокируют прямой запуск файлов, при этом внутреннее подключение и выполнение не запрещается. Например смотрите папку engine/data/ там есть PHP файлы, попробуйте их запустить напрямую с браузера, у вас не получится, доступ к ним закрыт, при этом эти файлы прекрасно запускаются и работают самим скриптом DLE
  26. dle_users (Посетители)

    27 октября 2010 19:11 6 комментариев
    Thanks Cleosoft
    you rock :D
    love u :D request

    How can i disable direct web browser access to system files like engine.php, init.php etcc
    all fles inside engine directory
  27. Fps-999 (Клиенты)

    31 октября 2010 08:37 16 комментариев
    Спасибо, ещё одной проблемой будем считать меньше wink
  28. pahanorlando (Клиенты)

    1 ноября 2010 18:07 36 комментариев
    dle_users,

    They should already be disabled by default
  29. RockKenny (Посетители)

    2 ноября 2010 08:26 10 комментариев
    Спасибо
  30. Testing (Клиенты)

    15 ноября 2010 08:51 3 комментария
    Сделал файлы .htaccess, прописал, но ни тот, ни другой вариант не работает. php файл выполняется. В чем может быть проблема?

Информация

Комментирование публикаций доступно только пользователям имеющим действующую лицензию на скрипт. Если вы уже приобретали скрипт, то вам необходимо зайти на сайт под своим клиентским аккаунтом.

Календарь

«    Декабрь 2020    »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031 

Опрос на сайте

Совершаете ли вы покупки в интернет?