Использование CAPTCHA для предотвращения использования ботами веб-сайта Razor ASP.NET

от Корпорации Майкрософт

В этой статье объясняется, как использовать ReCaptcha (мера безопасности), чтобы предотвратить выполнение задач автоматических программ (ботов) на веб-сайте веб-страницы ASP.NET (Razor).

Из этого руководства вы узнаете, как выполнять такие задачи:

  • Как добавить тест CAPTCHA на сайт.

Ниже приведены ASP.NET функции, представленные в этой статье:

  • Помощник ReCaptcha .

Примечание

Сведения в этой статье относятся к веб-страницы ASP.NET 1.0 и веб-страницам 2.

Сведения о CAPTCHAs

Каждый раз, когда вы позволяете людям зарегистрироваться на вашем сайте, или даже просто ввести имя и URL-адрес (как для комментария в блоге), вы можете получить поток поддельных имен. Их часто оставляют автоматизированные программы (боты), которые пытаются оставить URL-адреса на каждом веб-сайте, который они могут найти. (Распространенной мотивацией является публикация URL-адресов продуктов для продажи.)

Вы можете убедиться, что пользователь является реальным человеком, а не компьютерной программой, используя CAPTCHA для проверки пользователей, когда они регистрируются или иным образом вводят свое имя и сайт. CAPTCHA расшифровывается как полностью автоматизированный общедоступный тест Тьюринга, чтобы сообщить компьютеры и люди друг от друга. CAPTCHA — это тест на запрос и ответ , в котором пользователю предлагается выполнить что-то, что легко для человека, но трудно для автоматической программы. Наиболее распространенным типом CAPTCHA является то, где вы видите некоторые искаженные буквы и просят ввести их. (Предполагается, что из-за искажения ботам будет трудно расшифровывать буквы.)

Добавление теста ReCaptcha

На ASP.NET страницах можно использовать вспомогающую ReCaptcha функцию для отрисовки теста CAPTCHA, основанного на службе ReCaptcha. Вспомогательное средство ReCaptcha отображает изображение двух искаженных слов, которые пользователи должны ввести правильно перед проверкой страницы. Ответ пользователя проверяется службой ReCaptcha.Net.

Снимок экрана: тест Captcha, созданный службой ReCaptcha, на котором показаны два искаженных слова и текстовое поле для проверки пользователя.

  1. Зарегистрируйте веб-сайт в службе ReCaptcha. После завершения регистрации вы получите открытый и закрытый ключи.

  2. Добавьте библиотеку веб-помощников ASP.NET на веб-сайт, как описано в разделе Установка вспомогательных служб на сайте веб-страницы ASP.NET, если вы еще этого не сделали.

  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. 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 h t m l, на которой показаны созданные кнопки captcha и Отправить.

  10. Введите слова для теста. Если вы пройдете тест ReCaptcha, вы увидите сообщение об этом. В противном случае появится сообщение об ошибке, и элемент управления ReCaptcha переигран.

Примечание

Если компьютер находится в домене, который использует прокси-сервер, может потребоваться настроить defaultproxy элемент файлаWeb.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>

Дополнительные ресурсы