2015-10-05 172 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

    這實際上並不妨礙圖像選擇的出現 –