2015-10-05 173 views
3

v2 reCaptcha比先前的迭代有一些显着的改进。首次实现时(使用PHP验证btw),所有它从我的用户询问是检查一个盒子。然后,在提交了一些表单之后,它要求用户识别一些图像,然后在提交更多表单之后,要求用户验证多个图像挑战。删除手动挑战谷歌reCaptcha v2

有谁知道一种方法可以完全关闭/禁用Google recaptcha API中的手动图片挑战吗?即我希望他们只检查JS复选框 - 就像表单完成的前几次一样。

我知道那种失败的目的,但我准备如果换了一辆更好的用户体验,以对付垃圾邮件的一点点。

我已经试过:

我假设谷歌监测实施

  • https://www.google.com/recaptcha/api.js?data-type=none和智能地更改UI。在我的例子中,来自同一IP地址的许多请求看起来像一个bot,因此需要更好的验证。但是,只是单个用户多次重复提交相同的表单。我想要做的就是重写这个以始终使用最低安全性。

  • +0

    难道你不认为如果我们能够绕过他们的愿意验证它会无法提供多少帮助吗?... –

    +1

    如果用户反复提交的是同一用户,那么为什么还要向他们提出挑战第一次?如果会议是一个问题,请检查OWASP是否有正确的会话处理(并且在我的_opinion_中,会话始终是一个问题),然后在会话中设置一个标志,说明是否应该提供挑战。 – Ghedipunk

    回答

    4

    谷歌的验证码将假定每个你挑战一个人的时候,你怀疑他们是一个机器人,所以如果他们已经通过了一项挑战,挑战未来变得越来越难。

    因此,只有当你认为他们可能是一个机器人,比如他们第一次提交表单,或者如果他们没有身份验证的网站挑战的人。一旦谷歌告诉您用户是安全的,除非您有理由再次怀疑该用户,否则请相信他们。

    超全球可能是您最好的选择,但是与所有会话一样,请确保您遵循最佳实践(会话名指纹,令牌熵,会话修复攻击,混合不安全和TLS会话等)

    我会处理这件事的方式是,当用户第一次成功通过验证码验证,不要再挑战他们。

    下面的例子是基于谷歌在其提供的示例代码: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']没有设置或falsey
    • 不存在任何挑战,如果$_SESSION['isCaptchaVerified']是truish

    (请参阅PHP manual entry on empty()了解在这种情况下什么构成欺骗和虚假)。

    +0

    是的 - 这是一个很好的解决方法 - 谢谢! – contool

    +1

    如果我访问此网站,通过验证码一次,为我的会话获取此集,然后让我的机器人使用此会话来破解帐户而不用任何验证码进行检查,该怎么办? – JustMichael

    0

    转到您的管理控制台在谷歌,您设置网站的recaptcha。点击高级设置,将安全性偏好降至最低。 已解决

    +0

    这实际上并不妨碍图像选择的出现 –