recaptcha - 结合 reCAPTCHA v2 和 v3

标签 recaptcha

我热衷于使用 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 响应,将“否”更改为"is",然后让机器人自己调用“回调”函数以获取访问权限)。
任何帮助或建议将不胜感激。

最佳答案

将 token 与您的表单发布一起发送并在服务器端仔细检查它不是最简单的吗?我知道您仍然可能允许机器人将数据发布到您的系统中,但是可以被 google 偷偷摸摸的机器人应该非常罕见。您的服务器端逻辑应该做的第一件事是验证 token ,这不容易伪造。也就是说,在我对 google V3(10K 请求)的初步分析中,bot 检测是完全二进制的,因为所有分数都高于或低于 0.5 。谷歌在他们的文档中推荐了不同的策略来根据场景处理可疑流量。

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

关于recaptcha - 结合 reCAPTCHA v2 和 v3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215482/

相关文章:

security - 服务端验证reCaptcha需要什么?

css - 将谷歌验证码框集中在联系表 7 上

reCAPTCHA 之前的 HTML5 表单验证

javascript - 删除必需的属性 google recaptcha v3

forms - 即使在 reCAPTCHA v2(不可见)和 Honeypot 集成之后,Spambots 仍会继续创建用户注册 - 我还能做什么?

asp.net-mvc - 如何在 ASP.NET MVC 中捕获 g-recaptcha-response?

typescript - Angular 2 Recaptcha 2回调

javascript - 如何检查Google Recaptcha V2 Puzzle是否显示?

recaptcha - 将 reCaptcha 与 BlogEngine.net 结合使用

javascript - 人工/机器人验证