Объединение Recaptcha v2 и v3 - PullRequest
       6

Объединение Recaptcha v2 и v3

0 голосов
/ 16 января 2019

Я стремлюсь использовать ReCaptcha v3 для входа в систему и прочее, но я не уверен, что делать с «низким рейтингом», не безопасно отказывать в доступе, когда пользователь не может двигаться вперед. То, что кажется более полным решением, - это объединить «рейтинг» от v3 с проблемой головоломки от v2, если оценка слишком низкая. Как другие люди подходят к этому вопросу?

Кроме того, похоже, что v3 grecaptcha.execute возвращает аналогичный результат для v2, то есть, это также означает, что он не возвращает рейтинг, просто TOKEN, который проверен аналогично v2?

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

<!-- https://github.com/google/recaptcha/issues/279 -->
<script src="https://www.google.com/recaptcha/api.js?onload=v2_onload"></script>
<script src="https://www.google.com/recaptcha/api.js?onload=v3_onload&render=V3_SITE_KEY"></script>
<script src='https://www.google.com/recaptcha/api.js?render=V3_SITE_KEY'></script>
<div class="g-recaptcha" data-size="invisible" data-sitekey="V2_SITE_KEY" data-callback="v2_callback"></div>
<script type="text/javascript">
    function v2_onload() { console.log('v2 loaded'); }
    function v3_onload() { console.log('v3 loaded'); }
    function v2_callback(token) { console.log('v2 token: ' + token); }
    function v3_callback(token, score) { console.log('v3 token: ' + token +    " ----- " + score); }

    // call these manually
    function test_v2() { grecaptcha.execute(); }
    function test_v3() { 
    grecaptcha.execute('V3_SITE_KEY' , {action:'thisIsATest' }).then(v3_callback); 
}

У меня есть опасения, что если v3 требует проверки на стороне сервера, то для реализации v2 либо перезагрузите страницу, чтобы вызвать v2 (когда серверная сторона говорит «низкий рейтинг», то перезагрузите и включите v2) ИЛИ отключите v3 проверка на стороне может быть выполнена с помощью вызова ajax, но это похоже на что-то, что может быть проверено и обработано ботом (возьмите ответ ajax, измените «нет» на «да», а затем заставьте бота вызывать саму функцию «обратного вызова») получить доступ)

любая помощь или предложения будут оценены.

1 Ответ

0 голосов
/ 12 марта 2019

Разве не было бы проще всего просто отправить токен с вашей формой сообщения и дважды проверить его на стороне сервера?Я знаю, что вы все еще, возможно, разрешаете боту публиковать данные в вашей системе, но бот, который может проникнуть через Google, должен быть довольно редким.И первое, что должна сделать ваша логика на стороне сервера, это проверить токен, который нелегко подделать.Тем не менее, в моем первоначальном анализе google V3 (10 000 запросов) обнаружение ботов было чисто двоичным, в том смысле, что все оценки были выше или ниже 0,5.Google в своей документации рекомендует различные стратегии борьбы с подозрительным трафиком в зависимости от сценария.

https://developers.google.com/recaptcha/docs/v3.

...