Share via


Verwenden eines CAPTCHA, um zu verhindern, dass Bots Ihre ASP.NET Web Razor)-Website verwenden

von Microsoft

In diesem Artikel wird erläutert, wie Sie ReCaptcha (eine Sicherheitsmaßnahme) verwenden, um zu verhindern, dass automatisierte Programme (Bots) Aufgaben auf einer ASP.NET Web Pages (Razor)-Website ausführen.

Was Sie lernen:

  • So fügen Sie Ihrer Website einen CAPTCHA-Test hinzu.

Dies sind die ASP.NET Features, die im Artikel vorgestellt werden:

  • Das ReCaptcha Hilfsprogramm.

Hinweis

Die Informationen in diesem Artikel gelten für ASP.NET Web Pages 1.0 und Webseiten 2.

Informationen zu CAPTCHAs

Jedes Mal, wenn Sie Personen sich auf Ihrer Website registrieren lassen oder einfach nur einen Namen und eine URL eingeben (z. B. für einen Blogkommentar), können Sie eine Flut gefälschter Namen erhalten. Diese werden häufig von automatisierten Programmen (Bots) verlassen, die versuchen, URLs auf jeder website zu lassen, die sie finden können. (Eine häufige Motivation besteht darin, die URLs von Produkten zum Verkauf zu posten.)

Sie können sicherstellen, dass ein Benutzer eine echte Person und kein Computerprogramm ist, indem Sie ein CAPTCHA verwenden, um Benutzer zu überprüfen, wenn sie sich registrieren oder anderweitig ihren Namen und ihre Website eingeben. CAPTCHA steht für Completely Automated Public Turing test to tell Computers and Humans Apart (Vollautomatischer öffentlicher Turing-Test zur Unterscheidung von Computern und Menschen). Ein CAPTCHA ist ein Challenge-Response-Test, bei dem Benutzer aufgefordert werden, etwas zu tun, das für eine Person einfach, für ein automatisiertes Programm aber schwierig auszuführen ist. Die am häufigsten verwendete Art von CAPTCHA ist eine, bei der Sie einige verzerrte Buchstaben sehen und aufgefordert werden, sie einzugeben. (Die Verzerrung soll Bots erschweren, die Buchstaben zu erkennen.)

Hinzufügen eines ReCaptcha-Tests

Auf ASP.NET Seiten können Sie das ReCaptcha Hilfsprogramm verwenden, um einen CAPTCHA-Test zu rendern, der auf dem ReCaptcha-Dienst basiert. Das ReCaptcha-Hilfsprogramm zeigt ein Bild von zwei verzerrten Wörtern an, die Benutzer ordnungsgemäß eingeben müssen, bevor die Seite überprüft wird. Die Benutzerantwort wird vom ReCaptcha.Net-Dienst überprüft.

Screenshot des vom ReCaptcha-Dienst generierten Captcha-Tests mit zwei verzerrten Wörtern und einem Textfeld für die Benutzerüberprüfung.

  1. Registrieren Sie Ihre Website beim ReCaptcha-Dienst. Wenn Sie die Registrierung abgeschlossen haben, erhalten Sie einen öffentlichen Und einen privaten Schlüssel.

  2. Fügen Sie ihrer Website die ASP.NET Webhilfsbibliothek hinzu, wie unter Installieren von Hilfsprogrammen auf einer ASP.NET Web Pages-Website beschrieben, sofern noch nicht geschehen.

  3. Wenn Sie noch nicht über eine datei _AppStart.cshtml verfügen, erstellen Sie im Stammordner einer Website eine Datei mit dem Namen _AppStart.cshtml.

  4. Fügen Sie die folgenden Recaptcha Hilfsprogrammeinstellungen in der Datei _AppStart.cshtml hinzu:

    @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. Legen Sie die PublicKey Eigenschaften und PrivateKey mit Ihren eigenen öffentlichen und privaten Schlüsseln fest.

  6. Speichern Sie die Datei _AppStart.cshtml , und schließen Sie sie.

  7. Erstellen Sie im Stammordner einer Website eine neue Seite mit dem Namen Recaptcha.cshtml.

  8. Ersetzen Sie den vorhandenen Inhalt durch Folgendes:

    @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. Führen Sie die Seite Recaptcha.cshtml in einem Browser aus. Wenn der PrivateKey Wert gültig ist, wird auf der Seite das ReCaptcha-Steuerelement und eine Schaltfläche angezeigt. Wenn Sie die Schlüssel nicht global in _AppStart.htmlfestgelegt hätten, würde die Seite einen Fehler anzeigen.

    Screenshot der Browserseite

  10. Geben Sie die Wörter für den Test ein. Wenn Sie den ReCaptcha-Test bestehen, wird eine entsprechende Meldung angezeigt. Andernfalls wird eine Fehlermeldung angezeigt, und das ReCaptcha-Steuerelement wird erneut angezeigt.

Hinweis

Wenn sich Ihr Computer in einer Domäne befindet, die einen Proxyserver verwendet, müssen Sie möglicherweise das defaultproxy Element der Web.config-Datei konfigurieren. Das folgende Beispiel zeigt eine Web.config-Datei mit dem Element, das defaultproxy so konfiguriert ist, dass der ReCaptcha-Dienst funktioniert.

<?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>

Zusätzliche Ressourcen