Заблокировать недействительный реферер

В последнее время мой сайт пострадали от некоторых людей, у которых есть боты, которые спамят HTTP-запросы, все это в основном случайные тарабарщины, которые не могут быть отфильтрованы каким-либо осмысленным способом (без какой-либо очень серьезной работы), но одно несоответствие, которое я обнаружил, было в их строка реферера.

[22/Sep/2012:03:27:50 +0000] "GET /vb/ HTTP/1.0" 403 345 "1mc9py1amv.net" "Mozilla/3.0 (compatible; NetPositive/2.2)"

как видите, их ссылка не имеет протокола. Есть ли способ заблокировать ссылки без протокола, но в то же время разрешить пустые (никакие) ссылки на сайт попадать на сайт?

Что-то вроде того, если он содержит "http" или "https" или не заполнен, он разрешит, но все остальное запрещено?

Я пробовал что-то вроде

$HTTP["referer"] !~ "(http://.*|-)" {
    url.access-deny =  ( "" )
}

но это запретило пустую ссылку и не позволило https.

1 ответ

Решение
    $HTTP["referer"] !~ "^($|https://.*|http://.*)" {
            url.access-deny =  ( "" )
    }

Это добилось цели. Это очень полезно, если вы столкнулись с чем-то похожим.

Другие вопросы по тегам