Доступ на сайт через Captcha - как реализуется?

12
M
На сайте с 04.08.2011
Offline
102
2777

Добрый день!

Подскажите где почитать алгоритм защиты сайта через Captcha от нежелательных посетителей.

Есть идея настроить аналог CloudFlare с помощью Modsecurity, но я в упор не вижу даже базовый алгоритм подмены страницы сайта на страницу в капчей.

Вот что происходит технически?

Запускается какой-то скрипт, который берет на себя функции прокси и при проходе капчи, открывает сайт?

Может есть какие-то шаблоны или руководства в сети, как страница контента подменяется страницой капчи? И что происходит дальше - редирект?

Спасибо

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

modsecurity не предназначен для "блокировки нежелательных посетителей". Он предназначен для фильтрации потенциально небезопасных запросов (web application firewall). Он работает на уровне веб-сервера, проверяя запросы и либо пропускает их на бэкенд, либо отклоняет с ошибкой 403. Заменить стандартный 403 ответ на страницу с капчей возможно, например:

https://github.com/SpiderLabs/ModSecurity-nginx/issues/76

т.е. просто подменяя код ответа 403 на свою страницу (эта возможность есть и в nginx и в apache). Только непонятно зачем, т.к. капчу никто проходить там не будет :)

Нежелательных посетителей нужно на уровне веб сервера фильтровать, только определиться с понятием "нежелательные".

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
M
На сайте с 04.08.2011
Offline
102
#2

По ссылке они подменяют страницу на 403-ю кастомную, а дальше развития нет. Если человек с забаненого IP адреса зайдет на кастомный Access Denied, ему легче не станет. А я ищу метод чтобы собрав капчу, человек смог дальше пройти на сайт.

Задача - поставить на пути ботов, занимающихся накрутками и скрапингом, труднопроходимое препятствие.

К сожалению, многие боты ходят с IP адресов beeline и обычных провайдеров, так что банить их целиком - не самое лучшее решение. А так, используя IP reputation, можно подозрительным категориям подсовывать капчу перед заходом на целевую страницу, и я как раз хочу сделать подобное решение.

sergv
На сайте с 13.04.2006
Offline
413
#3

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

Почитать, негде, т.к. правила и условия придумаете вы, обработчик тоже писать нужно...

https://REGHOME.ru - регистрация и продление доменов от 169₽ в российских и международных зонах по честным ценам без звездочек. (R01, WebNames, UK2). Принимаем Ю-Money, Visa, MasterCard, Мир
M
На сайте с 04.08.2011
Offline
102
#4

Хорошо, допустим обработчик я придумал и написал. Вот вопрос #2 - как вместо страницы выдать капчу, а в случае если человек её проходит - выдать запрашиваемую страницу?

S
На сайте с 30.09.2016
Offline
469
#5

1. Сомнительному посетителю подсовываете капчу. При этом адрес, который он хотел посетить, каким-то образом записываете (в адресной строке, в скрытом поле формы, в куки, в сессии).

2. Посетитель угадывает капчу.

3. Угадавшего отправляете на тот адрес, который записали ранее.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
M
На сайте с 04.08.2011
Offline
102
#6

Хорошо, тогда другой вопрос - мы можем с помощью modsecurity вырезать часть HTML кода для таких вот посетителей с подозрительных IP?

Да, нашел - можно. Основной вопрос - кто это делал?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#7
mrmvd:
Задача - поставить на пути ботов, занимающихся накрутками и скрапингом, труднопроходимое препятствие.

Для этой задачи ModSecurity,не очень удобный вариант, хотя если вы фанат его синтакиса правил, вас не остановить :)

Вот например в ботгварде после детектирования бота в приложение (php) передается переменная с "уровнем вероятности", анализируя которую в приложении можно прятать какой-то HTML код для такого "посетителя", вместо 403 ошибки. Если у вас критерий "подозрительности" - только ip, в nginx такой конфиг набросать, чтоб переменную в скрипт передавал, можно и без всяких сервисов.

cloud-shield
На сайте с 25.01.2017
Offline
54
#8

У вас спортивный интерес к самостоятельной реализации этого?

Если нет, то проще воспользоваться готовой опцией у сервисов аля CF.

Защита сайтов от DDoS атак - Cloud-Shield.ru ( https://cloud-shield.ru )
neoks
На сайте с 17.03.2010
Offline
152
#9

Для гибкости одного только ModSecurity не хватит.

По сути вам нужно запрос отправлять в проверочный location, а в зависимости от его ответа, перенаправлять запрос в нужный бекенд.

M
На сайте с 04.08.2011
Offline
102
#10
cloud-shield:
У вас спортивный интерес к самостоятельной реализации этого?
Если нет, то проще воспользоваться готовой опцией у сервисов аля CF.

Да, спортивный. Хочу самостоятельно всё настроить, чтобы выбрать только те правила, которые мне нужны.

Увидел схему, где modsecurity каждый запрос отправляет на локальный dns сервер, который кэширует RBL таблицы. И уже от его ответа идёт действие. На бумаге всё очень просто и занятно, теперь осталось только реализовать и посмотреть, будет ли это тормозить для GET-запросов.

12

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