Защита от ботов. NGINX limit_req + белый список яндекс на основе rDNS

D
На сайте с 28.06.2008
Offline
1114
#81

Вот еще что придумал - многие боты не ставят вообще или ставят кривой рефер.

Будет полезно добавить

if ($http_referer !~* ^($|http://|https://) ){
return 403;
}
[umka]
На сайте с 25.05.2008
Offline
456
#82
Dram:
Вот еще что придумал - многие боты не ставят вообще или ставят кривой рефер.
Будет полезно добавить
if ($http_referer !~* ^($|http://|https://) ){
return 403;
}

Поздравляю! Теперь на ваш сайт не зайти из закладок, по ссылкам из почтовых клиентов и мессенджеров, а также просто набрав адрес сайта в адресной строке.

Лог в помощь!
D
На сайте с 28.06.2008
Offline
1114
#83

Таки да :))) вы правы, тупанул, убираю :)))

[umka]
На сайте с 25.05.2008
Offline
456
#84

Просто дефис == нет реферера

D
На сайте с 28.06.2008
Offline
1114
#85

А почему защита от хотлинка


location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt|ico|pdf|flv)$ {
valid_referers none blocked server_names ~(moy-sit|yandex|google|yahoo|bing|facebook|mail|rambler|nigma|ask|bing);
if ($invalid_referer) {
return 403;
}
error_page 404 = @fallback;
}

не спасает от таких запросов

37.112.231.174 - - [18/Feb/2017:06:59:26 +0300] "GET /images/92/7a0a31e910b.jpg HTTP/1.1" 200 13988 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
[umka]
На сайте с 25.05.2008
Offline
456
#86

А где вы устанавливаете $invalid_referer ?

D
На сайте с 28.06.2008
Offline
1114
#87

В location картинок - поправил код выше

[umka]
На сайте с 25.05.2008
Offline
456
#88

Ну вы же разрешаете обращения без рефереров:

valid_referers none

Поэтому такие запросы проходят.

D
На сайте с 28.06.2008
Offline
1114
#89

А если none уберу - чем это грозит? Кто-то в нормальных вариантах запрашивает картиники без рефера? Поисковые боты вероятно тогда попадут под раздачу... нужно опять с map конструкцию придумывать

---------- Добавлено 18.02.2017 в 15:56 ----------

Если прикрутить белый список - то так правильно? Как описать пустой рефер?

map $whitelist:$http_referer $bad_referer {
default 0;
"0:" 1;
"0:-" 1;
}



---------- Добавлено 18.02.2017 в 16:01 ----------

Или вот так правильно?

map $whitelist:$http_referer $bad_referer {
default 0;
"0:~ ^(|-|_)$)" 1;
}



---------- Добавлено 18.02.2017 в 16:58 ----------

Сделал так

map $whitelist:$http_referer $bad_referer {
default 0;
"1:~(yandex|google|yahoo|bing|facebook|mail|rambler|nigma|ask|bing)" 0;
"0:~(moy-site)" 0;
"0:~ ^(|-|_)$)" 1;
}

и в локешн картинок -

if ($bad_referer) {
return 403;
}

На другом своем сайте вставляю картинку с moy-site - не работает, картинка успешно показывается.

Понимаю что второй мой сайт попал в условие - default 0;

ставлю default 1;

и уже на moy-site перестаю показываться все картинки - вот тут я завяз, что не так?

L
На сайте с 13.03.2010
Offline
93
#90

Можно ли задать свой лимит запросов в секунду на страницу для *.jpg файлов, например? Чтобы если юзер заходит на страницу с 30 картинками, то это считалось не как 30 запросов к *.jpg, а как по одному к каждой отдельной картинке? Из-за различного кол-ва картинок на страницах сайтов невозможно подобрать оптимальный общий limit_req. На одной странице их 10, на другой 100. В итоге приходится ставить limit_req 100+ :(

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий