使用 CAPTCHA 阻止机器人使用 ASP.NET Web Razor) 站点

Microsoft

本文介绍如何使用 ReCaptcha (安全措施) 来防止自动化程序 (机器人) 在 ASP.NET 网页 (Razor) 网站中执行任务。

你将了解的内容:

  • 如何将 CAPTCHA 测试添加到站点。

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

  • 帮助 ReCaptcha 程序。

注意

本文中的信息适用于 ASP.NET 网页 1.0 和网页 2。

关于 CAPTCHA

每当你让人们在你的网站中注册,甚至只是输入名称和 URL (如博客评论) ,你可能会得到大量假名。 这些通常由自动化程序 (机器人) 留下,这些程序尝试在可以找到的每个网站中保留 URL。 (一个常见的动机是发布要销售的产品的 URL。)

可以通过使用 CAPTCHA 在用户注册或以其他方式输入其姓名和站点时验证用户,帮助确保用户是真实的人而不是计算机程序。 CAPTCHA 是“全自动区分计算机和人类的图灵测试”的英文缩写形式。 CAPTCHA 是一种 质询-响应 测试,其中要求用户执行一些对一个人来说容易执行但自动化程序很难执行的操作。 最常见的 CAPTCHA 类型是你看到一些扭曲的字母并被要求键入它们。 (这种扭曲效果应该是为了让机器人难以破译这些字母。)

添加 ReCaptcha 测试

在 ASP.NET 页中 ReCaptcha ,可以使用 帮助程序呈现基于 ReCaptcha 服务的 CAPTCHA 测试。 ReCaptcha 帮助程序显示两个扭曲字词的图像,用户必须正确输入这些字词才能验证页面。 用户响应由 ReCaptcha.Net 服务验证。

ReCaptcha 服务生成的 Captcha 测试的屏幕截图,其中显示了两个扭曲的字词和一个用于用户验证的文本字段。

  1. 将网站注册到 ReCaptcha 服务。 完成注册后,你将获得公钥和私钥。

  2. 按照在 ASP.NET 网页网站中安装帮助程序中所述,将 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 浏览器页面的屏幕截图,其中显示了创建的 captcha 和“提交”按钮。

  10. 输入测试的字词。 如果通过 ReCaptcha 测试,则会看到一条具有该效果的消息。 否则,会看到错误消息,ReCaptcha 控件将重新显示。

注意

如果计算机位于使用代理服务器的域中,则可能需要配置 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>

其他资源