Javascript 从google reCaptcha v2中删除手动质询

Javascript 从google reCaptcha v2中删除手动质询,javascript,php,recaptcha,Javascript,Php,Recaptcha,与以前的迭代相比,v2-reCaptcha有一些显著的改进。当第一次实现时(使用PHP验证btw),它要求我的用户选中一个复选框。然后在提交了一些表单之后,它要求用户识别一些图像,然后在提交了一些表单之后,它要求用户验证多个图像挑战 有人知道在google recaptcha API中完全关闭/禁用手动图像挑战的方法吗?i、 我希望他们只勾选JS复选框——就像前几次填写表单一样 我知道这有点违背目的,但如果为了更好的用户体验,我准备处理一些垃圾邮件 我试过: 通过添加关闭js(从一些旧的API

与以前的迭代相比,v2-reCaptcha有一些显著的改进。当第一次实现时(使用PHP验证btw),它要求我的用户选中一个复选框。然后在提交了一些表单之后,它要求用户识别一些图像,然后在提交了一些表单之后,它要求用户验证多个图像挑战

有人知道在google recaptcha API中完全关闭/禁用手动图像挑战的方法吗?i、 我希望他们只勾选JS复选框——就像前几次填写表单一样

我知道这有点违背目的,但如果为了更好的用户体验,我准备处理一些垃圾邮件

我试过:

  • 通过添加关闭js(从一些旧的API设置中挖掘出行)
  • (可选“true”仅强制使用非JS版本)
  • (根据照片在黑暗中拍摄)

我假设google会智能地监控实现并更改UI。在我的例子中,来自同一IP地址的许多请求看起来像一个机器人,因此需要更好的验证。但是,这只是一个用户多次重新提交同一表单。我想做的是覆盖它,始终使用最低安全性。

谷歌的reCaptcha假设每次你挑战某人时,你都怀疑他们是机器人,因此如果他们已经通过了一个挑战,下一个挑战就会越来越难

因此,只有当您认为某人可能是机器人时,例如他们第一次提交表单时,或者如果他们没有通过您站点的身份验证,才可以向他们提出质疑。一旦谷歌告诉你该用户是安全的,信任他们,除非/直到你有理由再次怀疑该用户

PHP
$\u会话
superglobal可能是您的最佳选择,但与所有会话一样,请确保您遵循最佳实践(会话名称指纹、令牌熵、会话固定攻击、混合不安全会话和TLS会话等)

我的处理方式是,当用户首次成功通过验证码质询时,不要再次质询他们

以下示例基于谷歌在其示例中提供的代码:


...

转到google中的管理控制台,在那里为站点设置recaptcha。单击“高级设置”,将安全首选项降至最低。
已解决

您不认为如果我们能够绕过他们的意愿验证,将不会有多大帮助吗?…如果是同一个用户重复提交,那么为什么在第一次提交后还要向他们提出挑战?检查OWASP是否正确处理会话如果会话是一个问题(在我看来,会话始终是一个问题),然后在会话中设置一个标志,说明是否应该向他们提出挑战。是的-这是一个非常好的解决方法-谢谢!如果我访问这个网站,传递一次验证码,为我的会话获取此设置,然后让我的机器人使用此会话攻击帐户,而不检查任何验证码,会怎么样?这实际上并不会阻止图像选择出现
<?php
if (empty($_SESSION['isCaptchaVerified'])) {
    $recaptcha = new \ReCaptcha\ReCaptcha($secret);
    $resp = $recaptcha->verify($gRecaptchaResponse, $remoteIp);
    if ($resp->isSuccess()) {
        // verified!
        $_SESSION['isCaptchaVerified'] = true;
    } else {
        $errors = $resp->getErrorCodes();
    }
}
...
?>
<form action="/" method="post">
    ...
    <?php if (empty($_SESSION['isCaptchaVerified'])) { ?>
        <script type="text/javascript"
            src="https://www.google.com/recaptcha/api.js?hl=<?php echo $lang; ?>">
        </script>
    <?php } ?>
</form>