.htaccess, затрудняющий взлом сайта

Теги:

apacheСоздавая сайты на собственных скриптах/CMS, приходится самому же беспокоиться и о вопросах защиты наших веб-приложений.

Это относится не только к безопасности на уровне языка программирования(контроль ввода), но и на уровне настройки сервера, в чем нам поможет файлик .htaccess.

Если правильно настроить фильтры, редиректы, и рерайты, то 90% уязвимостей веб-приложения невозможно будет использовать, даже если они есть, так как это, как правило, требует изощренных манипуляций с адресной строкой, которая благополучно фильтруется на уровне сервера.

Примером подобного подхода может служить вот такой htaccess-скриптик:

<FilesMatch ".">
order allow,deny
deny from all
</FilesMatch>
<FilesMatch "(index.php|.(gif|jpe?g|png|css|js|html|zip|rar|exe|7z|bz2|gz|txt|pdf|djvu))$">
order allow,deny
allow from all
</FilesMatch>
RewriteEngine On
RewriteRule !.(gif|jpe?g|png|css|js|html|zip|rar|exe|7z|bz2|gz|txt|pdf|djvu)$ index.php

Суть его в том, что разрешены запросы ко всем файлам, перечисленным в регулярном выражении, а это index.php в корне сайта, картинки, архивы, текстовики, скрипты, html-файлы, программы, и пр.(дополняем список расшрений по мере необходимости). К остальным - запрещен. Это не позволит злоумышленнику обращаться к компонентам приложения по отдельности, минуя проверки и ограничения прав доступа, предусмотренные нормальной логикой работы приложения.

Также полезно ограничивать перечень передаваемых символов, которые будет воспринимать наш скрипт. Например, вот такой код защитит нас от sql-инжекций:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([0-9/a-zA-Z_-.]{1,256}) index.php?q=$1 [L]

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

ErrorDocument 404 index.php?err=404

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

Информация по теме:

Спонсор поста:

Платный хостинг от домишко. Надежный хостинг за умеренную цену, и  хороший выбор конфигураций VDS-серверов. Также компания предоставляет услуги создания и раскрутки сайтов, и техподдержки. Множество положительных отзывов о работе серверов, безопасности хостинга, и качестве обслуживания в техподдержке.

Статьи схожей тематики:

Новый плагин для FCKeditor - scaleimages

Подключаем к FCKeditor видео с RuTube

FCKeditor и настройка диалогов

Минималистичный WYSIWYG

Ссылки на Skype и ICQ

Комментарии(16):

rss-лента

Добавлено: 2009-05-06 12:13:51, Zorg

Это хорошая тема, давно подумывал над добавлением такого хтаксеса в Ne.

Добавлено: 2009-05-06 22:31:18, maxx

Странно, что далеко не все пользуются хтакцессом. Я с самого начала изучения веб-программирования приучил себя пользоваться такими правилами.

Добавлено: 2009-05-07 23:26:48, Vladimir

Могу предложить дополнение к такой защите: http://blog.sjinks.org.ua/security/361-minimizing-consequences-of-http-scans/ — Минимизируем неприятные последствия HTTP-сканирования

>>> Странно, что далеко не все пользуются хтакцессом.

Использование .htaccess влечёт за собой некоторые потери в производительности.

>>> Например, вот такой код защитит нас от sql-инжекций

Не защитит. Во-первых, не проверяется QUERY_STRING, а во-вторых, данные, передаваемые в POST, проверяться в .htaccess не будут.

>>> К остальным - запрещен. Это не позволит злоумышленнику обращаться к компонентам приложения по отдельности

Хорошая практика — вынос библиотек, конфигов и прочих файлов за DocumentRoot. Тогда отпадает необходимость в подобном .htaccess.

Добавлено: 2009-05-07 23:59:50, Bolzamo

Хорошая практика — вынос библиотек, конфигов и прочих файлов за DocumentRoot
Это да, но перенос усложняется.

Добавлено: 2009-05-23 08:50:59, пацик

у меня htacess всегда защищен паролем

Добавлено: 2009-05-25 14:59:13, Артём

Тут пароли не очень помогут. Если уж кто-то захочет достать... ничего не попишешь...

Добавлено: 2009-05-28 11:24:14, raider_rava

Согласен. Такая защита действенна только от кул-хацкеров. Против профи это только смешить людей. Но кулеров этих малолетних развелось много. Так что лучше поставить. Кушать то не просит.

Добавлено: 2009-06-01 20:42:16, Вова

Ніфіга собі!!! Блін тепер я поняв чо всі мої проекти в неті рано чи пізно взломують... Тепер перероблю все... Дякую автору!!!

Добавлено: 2009-08-03 09:06:14, Dariy

Спасибо за информацию. Хотел бы спросить, где можно поподробнее почитать про парамаетры и вообще правила написания хтацесса?

Добавлено: 2009-08-04 14:39:46, Bolzamo

В гугле!
Ну, или на http://htaccess.net.ru/

Добавлено: 2009-08-15 18:54:17, tahaco

Мой фтп менаджер не видет файла... Что делать?

Добавлено: 2009-08-31 14:25:56, Artemon

Спасибо. А мой сайт до сих пор был под угрозой. Пойду исправлять. немедленно.

Добавлено: 2009-09-24 00:33:09, Mashuta

А идея хорошая.

Добавлено: 2010-01-14 12:59:28, pavel

Интересное решение... спасибо Вам, будем думать!

Добавлено: 2010-03-22 22:54:20, Василий

Недавно написал на форуме забугорного товарища по это же теме
http://www.helpmewithperl.com/YaBB.pl?num=1269277200

Добавлено: 2011-02-25 16:25:22, DieselxXx

И главное не забывать что неправильно настроенный htaccess приведет к неработоспособности сайта или его частичной блокаде.
Примеры htaccess можете посмотреть тут:
http://thetech.com.ua/?p=1517
и тут:
http://thetech.com.ua/?p=1243

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

Ваше имя:*
Ваш email:*(не публикуется)
Ваш блог:
Ваш комментарий:*

Переносы строк и url-адреса преобразуются автоматически, не забудьте отделить их пробелами. html и bb-коды не поддерживаются.

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