我热衷于使用 reCAPTCHA v3 进行登录和其他内容,但我不确定如何处理“低评级”,拒绝访问而用户无法继续前进是不安全的。如果分数太低,感觉更完整的解决方案是将 v3 的“评级”与 v2 的拼图挑战结合起来。其他人如何处理这个问题?
此外,似乎 v3grecaptcha.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);
}
Run Code Online (Sandbox Code Playgroud)
我担心如果 v3 需要服务器端验证,为了实现 v2,要么重新加载页面以调用 v2(当服务器端说“低评级”然后重新加载并启用 v2)或 v3 服务器端验证可以通过 ajax 调用完成,但这感觉就像机器人可以检查和操纵的东西(获取 ajax 响应,将“否”更改为“是”,然后让机器人自己调用“回调”函数以获取访问权限)。
任何帮助或建议将不胜感激。
reCAPTCHA官方常见问题网站上似乎有这个问题的答案。
为此,请按照文档加载v3站点密钥,然后使用显式呈现v2。
grecaptcha.render
<html>
<head>
<title>reCAPTCHA demo: Running both v2 and v3</title>
<script src="https://www.google.com/recaptcha/api.js?render=v3_site_key"></script>
<script>
grecaptcha.ready(() => {
grecaptcha.render('html_element', {
'sitekey' : 'v2_site_key'
});
});
</script>
<script>
function onSubmit() {
grecaptcha.ready(() => {
grecaptcha.execute('v3_site_key', {action: 'homepage'}).then((token) => {
...
});
});
}
</script>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)
将令牌与表单一起发送并在服务器端仔细检查不是最简单的吗?我知道您仍然可能允许机器人将数据发布到您的系统中,但可以通过 Google 偷偷溜走的机器人应该很少见。服务器端逻辑应该做的第一件事是验证令牌,该令牌不容易被伪造。也就是说,在我对 google V3(10K 请求)的初步分析中,机器人检测完全是二进制的,因为所有分数都高于或低于 0.5 。谷歌在其文档中建议了如何根据场景处理可疑流量的不同策略。
| 归档时间: |
|
| 查看次数: |
3507 次 |
| 最近记录: |