Зайчета, дракони и "нормалният" свят: Теорема за централната граница | Ню Йорк Таймс

Опитвам се да внедря някаква защита срещу автоматизирани атаки на моя уебсайт (най-вече чрез скриптове, сондиране за SQL инжектиране и т.н.) Така че проверявам дали две последователни посещения от един и същ IP попадат в определен период от време. И ако е така, тогава показвам празна страница с кратко изречение, че честотата на посещенията е твърде висока.

Но сега се чудя, да речем, ако Google, Bing, Duck-Duck-Go или други уважавани търсачки посещават уебсайт, знаем ли интервал от време между посещенията на страницата, когато обхождат даден сайт?

Например, те няма да започнат да зареждат всички страници на уебсайта наведнъж или в рамките на кратък период от време (да речем, измерен в секунди.)


PS. Казва уважаван Имам предвид търсачките, които играят по правилата, които те изчистват, публикуват на своите уебсайтове.

Зависи от уебсайт до уебсайт. Ако имате уебсайт за новини с много ново съдържание, публикувано на час, можете да очаквате повече посещения от ботове за търсене. Ако вашите страници са само статични, тогава можете да очаквате много по-малко посещения от ботове за търсене.

Показването на идея за празна страница е рисковано.

Освен това, ако наистина искате да направите предположение, отидете в инструментите си за уеб администратори на Google и проверете скоростта на обхождане. Това ще ви даде някаква представа за скоростта на обхождане.

Сега се стига до въпроса. Ако наистина искате да спрете тези злонамерени ботове и други неща, тогава може би да кодирате някакъв бот ловец. Например можете да поставите малка връзка 0x0 пиксела в долния колонтитул на вашия уебсайт, която води до скрипт. Този скрипт ще провери IP адреса на посетителя. Там ще отиват само ботове, тъй като хората дори няма да го видят. Направете регистрация в базата данни за всички попадения, които получавате там. Сега, за да разграничите добрите и лошите ботове, можете да поставите Disallow в robots.txt и ако все още ботовете го удрят, те са злонамерени и могат да бъдат добавени динамично към черния списък. Черният списък може да бъде всичко, което един .htaccess ще направи.

  • Това, което питам, не е колко често сайтът ще бъде обхождан (справка за Google Console), а колко страници наведнъж ще обхожда на моя сайт. С други думи, да речем, аз имам page1.html, page2.html, page3.html. По време на сесията на обхождане, колко скоро ще бъде обходено page1.html срещу page2.html срещу page3.html. Опитах се да го изясня в моя OP, но предполагам, че не ...

Ботовете за ограничаване на скоростта не са добър начин да защитите сайта си от XSS и SQL инжектиране. Ако вашият сайт е уязвим, ботът може да се наложи да изпробва само няколко тактики, за да стигне до него, който може да разпространи в рамките на дни или седмици или множество IP адреси, ако е ограничен или е забранен. Правилният начин за защита срещу инжекцията е (1) да се използва висококачествен сървърен софтуер и да се поддържа правилно закърпен, (2) да се обмисли използването на Политика за сигурност на съдържанието и (3) да се използва защитна стена за уеб приложения.

Както Керал спомена в другия отговор, честотата на легитимен робот варира драстично в зависимост от това колко популярен е вашият уебсайт и колко често се актуализира. Например с уебсайт като Stack Exchange изглежда Googlebot посещава първата страница няколко пъти в секунда. Някои уебсайтове могат дори да видят 150 заявки в секунда от Googlebot, ако са неправилно конфигурирани. Така няма строго правило за това колко често робот може да посети, преди да е със сигурност „злонамерен“.

Като се има предвид това, ако един бот удря вашия сайт толкова много, че кара сървъра ви да се закопчава под натиска (или просто „очевидно твърде много“, например 10 пъти в секунда), можете да използвате тактиката „празна страница“ като споменахте, но уверете се, че връща кода на състоянието 429 Too Many Requests така че вашето намерение също е машинно четимо. Това казва на бота да се охлади и да спре да изпраща толкова много заявки толкова бързо. Ако ботът игнорира този сигнал силно, тогава е справедливо да го забраните, но вероятно няма много причина да се притеснявате, освен ако самите 429 не причиняват твърде много натоварване на сървъра.

  • Е, IDK, почти 47 000 посещения само за вчера от този човек. Това достатъчно ли е? Използваше няколко различни IP адреса. Всички VPN, с изключение на няколко между тях. Тези бяха от Русия. (Вероятно е забравил да включи неговата VPN.) Все пак не бих го нарекъл робот. Само някакъв автоматизиран скрипт. По принцип повторно итериране на различни версии на SQL Injection параметри за URL адресите.
  • @ c00000fd Бих препоръчал да публикувате нов въпрос с тази информация, тъй като "опитът да се приложи някаква защита срещу инжектиране" е съвсем различна история от "помощ, уебсайтът ми в момента е ударен 47 000 пъти на ден от решителен нападател, който продължава да скача IP адреси ". Когато публикувате този въпрос, също би било полезно да публикувате какъв тип сървърен софтуер използвате.
  • В крайна сметка обаче вашият уебсайт е уязвим или не. Нападателят не може да си позволи да посещава сайта ви 47 000 пъти на ден, ден след ден без каквато и да е печалба, освен ако не са насочени специално към вас по някаква причина. След като се уверите, че сървърът ви е изцяло закърпен, може да помислите да използвате нещо като CloudFlare, за да помогнете за филтриране на заявките, докато те се откажат и изчезнат.

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?