v2 reCaptcha比以前的迭代有一些显着的改进。当第一次实现(使用PHP验证顺便说一句)时,我的用户询问的是检查一个框。然后在几个表单提交后,它要求用户识别一些图像,然后在几个表单提交之后,它要求用户验证多个图像挑战。
有没有人知道在google recaptcha API中完全关闭/禁用手动图像质询的方法?即我希望他们只检查JS复选框 - 就像表格完成的前几次一样。
我知道这有点挫败了目的,但我准备好处理一点垃圾邮件,如果交易更好的用户体验。
我试过了:
我假设谷歌监控实施并智能地更改UI。在我的实例中,来自同一IP地址的许多请求看起来像机器人,因此需要更好的验证。但是,它只是一个用户重新提交相同的表单多次。我想要做的就是覆盖它,以便始终使用最低安全性。
答案 0 :(得分:5)
因此,只有当您认为他们可能是机器人时才会向某人提出质疑,例如他们第一次提交表单,或者他们未对您的网站进行身份验证。一旦Google告诉您用户是安全的,除非/您有理由再次怀疑该用户,否则请相信他们。
PHP $_SESSION
超全球可能是您最好的选择,但与所有会话一样,请确保您遵循最佳做法(会话名称指纹识别,令牌熵,会话固定攻击,混合不安全和TLS)会议等。)
我处理它的方式是,当用户首次成功通过CAPTCHA挑战时,不要再次挑战它们。
以下示例基于Google在其示例中提供的代码:https://github.com/google/recaptcha/blob/master/examples/example-captcha.php
<?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>
这将:
$_SESSION['isCaptchaVerified']
或假名$_SESSION['isCaptchaVerified']
啰嗦,则不存在任何挑战(请参阅PHP manual entry on empty()
,了解在此背景下构成真实和虚假的内容)。
答案 1 :(得分:0)
转到您在google设置recaptcha的管理控制台。单击高级设置,将安全性首选项降至最低。 解决