Фильтрация спамботов с помощью .htaccess

Существует ресурс, коллекционирующий правила .htaccess для защиты от всякого рода сетевой нечисти. Разработка продвинутых бан-листов ведется автором с 2006 года и он утверждает, что повышение нагрузки на Апач от порядком разросшегося списка — незаметное по сравнению с тем, как полегчало серверу после отсечения тучи уродов.

На данный момент бан-лист производит:

отсев редких методов запроса (delete, track, trace), с которыми на обычном сайте делать нечего проверку на наличие в запросе символов, используемых при сканировании сайтов на предмет уязвимостей отбой рефспама по признакам порно-, фарма-, гемблинг-ресурсов проверку cookies на присутствие разнообразной гнили защиту от эксплойтов специально сформированным URI список известных User-Agent плохих ботов (есть еще школьники, которые не догадываются убрать агента CURL, Indy и пр.) фильтры для строки параметров (куда часто подсовывается SQL-inj) некоторые IP, перманентно задалбывавшие автора

Требуется наличие mod_rewrite и mod_alias.

Правила следует копировать из соответствующего поста: http://perishablepress.com/press/2009/03/16/the-perishable-press-4g-blac…

Источник традиционный

Источник: http://www.drupal.ru/node/35583

10 трюков с .htaccess для Drupal

Попались на глаза «10 отличных трюков с .htacces для Вордпресса», решил применить это к Друпалу.

Внимание!
Разумеется, я ничего не проверял. Перед изменением файла .htaccess не забудьте сделать его резервную копию. Я не отвечаю за работоспособность вашего сайта после исполнения этих трюков.

1 — Перенаправляем RSS поток Drupal на feedburner с использованием .htaccess

Почему некоторые вебмастера не используют feedburner? Ведь это такой замечательный инструмент для контроля за читателями RSS вашего сайта. Наверное проблема в том, что приходится руками исправлять файлы шаблонов, но этот трюк поможет сохранить Ваше время. Не забудьте исправить в строке 6 на Ваш код

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ httр://feeds2.feedburner.com/vash_kod[R=302,NC,L] </IfModule> 2 — Удалить /node/ (или что-то другое) из пути в адресе Drupal

По умолчанию адреса материалов Drupal отображаются так: httр://www.drupal.ru/node/777
Но не все понимают что такое node и зачем оно в адресе. Это можно исправить с помощью .htaccess

<?phpRewriteRule ^node/(.+)$ httр://www.drupal.ru/$1 [R=301,L]?>

Теперь адреса будут выглядеть так: httр://www.drupal.ru/777

П р и м е ч а н и е. Разумеется, Друпалу это не надо – он имеет развитую систему создания адресов с помощью модуля Path, мощь которого многократно увеличивается путем установки модуля PathAuto.

3 — Оптимизация за счет использование кэша браузера

Очень хороший путь оптимизации сайта — это использование кэша браузера. Этот код улучшает кэширование браузером статических файлов. При повторном запросе к файлу, который не изменился клиент получит HTTP-заголовок 304 (Not Modified), а не содержимое файла.

FileETag MTime Size <ifmodule mod_expires.c> <filesmatch "\.(jpg|gif|png|css|js)$"> ExpiresActive on ExpiresDefault "access plus 1 year" </filesmatch> </ifmodule> 4 — Сжатие статических данных

Этот код уменьшит объём данных передаваемых между сервером и пользователем за счет их сжатия.

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-text/html 5 — Перенаправление с одного URL на другой

Это делается отдачей http-заголовка 301 (Moved Permanently, перемещен навсегда). Например, если вам требуется перенаправить пользователя с адреса httр://www.drupal.ru/2009/03/25/name-of-the-post на httр://www.drupal.ru/name-of-the-post, это можно сделать как-то так:

RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ httр://www.domain.com/$4

Еще в Друпале можно использовать модули PathAuto и GlobalRedirect

6 — Антиспам: запретить комментирование если отсутствует referrer

Метод построен на том, что многие спам-боты не передают referer (заголовок http-запроса, содержащий адрес страницы, откуда производится переход) когда отправляют спам. Этот код проверяет referrer и блокирует отправку комментария если отсутствует referer при обращении к пути /comment/reply/. Не забудьте в строке 4 вписать домен своего сайта.

RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} !^.*/comment/reply/* RewriteCond %{HTTP_REFERER} !.*drupal.ru.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L] 7 — Перенаправить пользователя на страницу-заглушку

При обслуживании сайта желательно показать посетителям временную страницу-заглушку. Замените в строке 2 maintenance.html на название вашего файла. В строке 3 впишите свой IP, чтобы вас не перекидывало на эту заглушку. 302-редирект используется чтобы поисковые системы не проиндексировали содержимое временной страницы.

RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123 RewriteRule $ /maintenance.html [R=302,L]

Разумеется, можно делать тоже самое из админки Drupal (admin/settings/site-maintenance)

8 — Защита сайта от «хотлинков»

Хотлинк — это использование файлов, размещенных на вашем сайте на страницах других сайтов с целью сэкономить свой серверный трафик. Тема у нас уже обсуждалась, повторим. Суть аналогична таковой из трюка 6: левый реферрер – пошел вон.

RewriteEngine On #Замените ?drupal\.ru/ адресом своего сайта RewriteCond %{HTTP_REFERER} !^http://(.+\.)?drupal\.ru/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Замените /images/nohotlink.jpg путем к своей картинке, где нарисована волосатая негритянская задница RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] 9 — Разрешить доступ к admin-ке только с вашего IP

Дополнительной защитой сайта от взлома может служить ограничение списка адресов, с которых разрешено заходить в админку. Не забудьте вставить свой IP в строке 2.

RewriteCond %{REQUEST_URI} ^/admin/ RewriteCond %{REMOTE_ADDR} !123.123.123.123 RewriteRule .* - [F] 10 — Блокирование IP спамеров

Часто спам-боты ходят с одних и техже IP. Трюк поможет блокировать доступ с этих адресов. Внесите адрес спамера в строке 3. Можно расширить список заблокированных адресов добавив строки deny from xxx.xx.xxx.xxx.

<Limit GET POST> order allow,deny deny from 200.49.176.139 allow from all </Limit>

Обновление Исправлен код в 9 трюке – теперь можно реально запретить доступ к админке с левых ip-адресов.

Источник: http://www.drupal.ru/node/26767

© 2009 Обзор CMS