Капча - один из очень распространённых и часто используемых способов для защиты приложений от атак.
Существуют различные имплементации капчи, от сторонних вендоров до собственных вариантов. При этом предложение от Google'а - reCapthcha - выглядит весьма привлекательным. Аргументы "за":
Существуют различные имплементации капчи, от сторонних вендоров до собственных вариантов. При этом предложение от Google'а - reCapthcha - выглядит весьма привлекательным. Аргументы "за":
- достаточно известный вендор ))
- хороший экспириенс как для пользователей (не очень сложно), так и для компании (достаточно безопасно)
- есть WCAG-compliance
- простая интеграция в приложение буквально в несколько действий.
Именно об интеграции и пойдёт речь дальше.
Как же это работает?
Компания, её представитель ил разработчик регистрируется / логинится на https://www.google.com/recaptcha/admin и регистрирует там свой домен. Доменов можно указать несколько. При регистрации домена создаваемые ключи действительны для всех поддоменов.
После регистрации домена он получает два ключа - публичный site key и приватный secret key. Как следует из названий (и в полной аналогии с ассиметричными ключами шифрования), публичный ключ доступен всем и используется на сайте, приватный - не афишируется и применяется для back-2-back взаимодействия.
На фронтэнд части встраивается reCaptcha-клиент - пользователю отображается привычный виджет, в котором верят на слово или просят что-нибудь кликнуть.
Варианты описаны на reCaptcha v2 client side. "Наш" вариант использует Explicitly render the reCAPTCHA widget кейс.
После подтверждения запрос (вместе с публичным ключом) с фронтэнда уходит на сервер Google'а, в ответе возвращается reCaptchaResponse - большущий одноразовый код. На странице он сохраняется в тесктовом hidden поле g-recaptcha-response.
Далее фронтэнд сообщает этот код бэкэнду, который вторым запросом в Google (вместе с приватным ключом и полученным кодом) просит провалидировать. Если всё совпадает - Google говорит ок, иначе фэйлит. Бэкэнд + фронтэнд обрабатывают ответ и соответстввенным образом реагируют на него.
Красота! :-)
Комментариев нет:
Отправить комментарий