On Sun, 22 Jun 2003, Монашёв Михаил wrote:
>
> IS> Так как атака делается обычными браузерами, то большинство из них
> IS> выставляет заголовок "Referer". Поэтому можно проверять этот заголовок
> IS> mod_rewrite'ом для тяжёлых урлов. В случае, если реферер есть
> IS> и он не совпадает с нашим сайтом или с разрешенными сайтами (например,
> IS> поисковиками), то выдавать пустой ответ или редирект туда, откуда пришёл.
>
> Спасибо за идею!
> Её можно реализовать и без mod_rewrite:
>
> SetEnv we_under_atack no
> SetEnvIf Referer bad-site\.com we_under_atack=yes
> PassEnv we_under_atack
>
> и в скриптах проверять переменную we_under_atack.
Реферер можно с таким же успехом проверять и в скриптах.
mod_rewrite'ом же можно вообще не довести дело до скрипта, так
как запуск cgi - не самая дешёвая операция как с точки зрения памяти,
так и процессора, особенно, когда одновременных запусков будет много.
> А что можно предпринять заранее? Вот например с фильтрация запросов,
> идущих к медленным скриптам с подобным в заголовке
>
> Accept: image/gif, image/jpeg, */*
>
> , т.е. только image/* и */*
> Или вообще пропускать только те запросы, у которых в Accept стоит
> только */* или есть подстрока text/html
>
> SetEnv we_under_atack yes
> SetEnvIf Accept "^*/*$" we_under_atack=no
> SetEnvIf Accept text/html we_under_atack=no
> PassEnv we_under_atack
>
> Или так лучше не поступать, т.к. может привести к потере посетителей?
Не знаю, я особенно не интересовался, что и в каких случаях браузеры
в Accept.
Игорь Сысоев
http://sysoev.ru