共用方式為


利用 CAPTCHA 避免 Bot 使用您的 ASP.NET Web (Razor) 網站

Microsoft 提供

本文說明如何使用 ReCaptcha (一種安全性措施) 來防止自動化程式 (Bot) 在 ASP.NET Web Pages (Razor) 網站中執行工作...

您將學到的內容:

  • 如何新增 CAPTCHA 測試至您的網站。

以下是本文中介紹的 ASP.NET 功能:

  • ReCaptcha 協助程式。

注意

本文中的資訊適用於 ASP.NET Web Pages 1.0 和 Web Pages 2。

關於 CAPTCHA

每次當您讓人們在您的網站上註冊,甚至只是輸入一個名字和 URL (例如一則部落格留言),都可能會得到大量的虛假名稱。 這些通常是由自動化程式 (Bot) 留下的,它們試圖在能找到的每個網站中留下 URL。 (常見動機是張貼要銷售的產品 URL。)

在使用者註冊或以其他方式輸入名稱和網站時,利用 CAPTCHA 進行驗證有助於確保使用者是真人,而非電腦程式。 CAPTCHA 代表全自動區分電腦和人類的公開圖靈測試。 CAPTCHA 是一種挑戰-回應測試,其會要求使用者執行一些對人來說很容易但對自動化程式來說很困難的動作。 最常見的 CAPTCHA 類型是一些扭曲的字母,使用者會收到要求輸入這些字母。 (扭曲的形狀旨在使 Bot 難以解讀這些字母。)

新增 ReCaptcha 測試

在 ASP.NET 網頁中,您可以使用ReCaptcha協助程式來轉譯以 ReCaptcha 服務為基礎的 CAPTCHA 測試。 ReCaptcha 協助程式會顯示一個影像,其中包含兩個扭曲的字詞,使用者必須正確輸入才能驗證頁面。 ReCaptcha.Net 服務會驗證使用者的回應。

ReCaptcha 服務產生的 Captcha 測試的螢幕擷取畫面,顯示兩個扭曲的字詞和一個文字欄位以供使用者驗證。

  1. ReCaptcha 服務註冊您的網站。 完成註冊後,您會收到一個公開金鑰和一個私密金鑰。

  2. 若尚未完成,請依照在 ASP.NET Web Pages 網站中安裝協助程式中所述,將 ASP.NET Web 協助程式庫新增至您的網站。

  3. 如果您還沒有 _AppStart.cshtml 檔案,請在網站的根資料夾中建立一個名為 _AppStart.cshtml 的檔案。

  4. 將下列 Recaptcha 協助程式設定新增至 _AppStart.cshtml 檔案:

    @using Microsoft.Web.Helpers;
    @{
      // Add the PublicKey and PrivateKey strings with your public
      // and private keys. Obtain your PublicKey and PrivateKey
      // at the ReCaptcha.Net (http://recaptcha.net) website.
      ReCaptcha.PublicKey = "your-public-key";
      ReCaptcha.PrivateKey = "your-private-key";
    }
    
  5. 使用您的公開金鑰和私密金鑰設定 PublicKeyPrivateKey 屬性。

  6. 儲存 _AppStart.cshtml 檔案並將它關閉。

  7. 在網站的根資料夾中,建立一個名為 Recaptcha.cshtml 的新頁面。

  8. 將現有內容取代如下:

    @using Microsoft.Web.Helpers;
    @{
      var showRecaptcha = true;
      if (IsPost) {
        if (ReCaptcha.Validate()) {
            @:Your response passed!
            showRecaptcha = false;
        }
        else{
          @:Your response didn't pass!
        }
      }
    }
    <!DOCTYPE html>
    <html>
        <head>
            <title>Testing Global Recaptcha Keys</title>
        </head>
        <body>
        <form action="" method="post">
        @if(showRecaptcha == true){
            if(ReCaptcha.PrivateKey != ""){
                <p>@ReCaptcha.GetHtml()</p>
                <input type="submit" value="Submit" />
            }
            else {
                <p>You can get your public and private keys at
                the ReCaptcha.Net website (http://recaptcha.net).
                Then add the keys to the _AppStart.cshtml file.</p>
            }
        }
        </form>
        </body>
    </html>
    
  9. 在瀏覽器中執行 Recaptcha.cshtml 頁面。 如果 PrivateKey 值有效,頁面會顯示 ReCaptcha 控制項和一個按鈕。 如果您尚未在 _AppStart.html 中全域設定金鑰,頁面會顯示錯誤。

    Recaptcha .cshtml 瀏覽器頁面的螢幕擷取畫面,顯示已建立的 Captcha 和 [提交] 按鈕。

  10. 輸入要測試的字詞。 如果通過 ReCaptcha 測試,您會看到一則說明該狀況的訊息。 否則,您會看到一則錯誤訊息,且 ReCaptcha 控制項會重新顯示。

注意

如果您的電腦位於使用 Proxy 伺服器的網域上,您可能需要設定 Web.config 檔案的 defaultproxy 項目。 以下範例顯示一個已設定 defaultproxy 項目的 Web.config 檔案,使 ReCaptcha 服務能夠運作。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.net>
      <defaultProxy>
         <proxy
            usesystemdefault = "false"
            proxyaddress="http://myProxy.MyDomain.com"
            bypassonlocal="true"
            autoDetect="False"
         />
      </defaultProxy>
   </system.net>
</configuration>

其他資源