使用 CAPTCHA 防止 Bot 使用您的 ASP.NET Web Razor) 網站

Microsoft提供

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

您將瞭解的內容:

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

以下是文章中引進的 ASP.NET 功能:

  • 協助 ReCaptcha 程式。

注意

本文中的資訊適用于 ASP.NET Web Pages 1.0 和網頁 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. _AppStart.cshtml檔案中新增下列 Recaptcha 協助程式設定:

    @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. PublicKey使用您自己的公開和私密金鑰來設定 和 PrivateKey 屬性。

  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 dot c s h t m l browser page 的螢幕擷取畫面,其中顯示已建立的 captcha 和 Submit 按鈕。

  10. 輸入測試的字組。 如果您通過 ReCaptcha 測試,您會看到該效果的訊息。 否則您會看到錯誤訊息,且重新顯示 ReCaptcha 控制項。

注意

如果您的電腦位於使用 Proxy 伺服器的網域上,您可能需要設定 defaultproxyWeb.config 檔案的 元素。 下列範例顯示 Web.config 檔案, defaultproxy 其中設定為讓 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>

其他資源