Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Dokument wird das Anforderungsüberprüfungsfeature von ASP.NET beschrieben, bei dem die Anwendung standardmäßig daran gehindert wird, nicht codierte HTML-Inhalte zu verarbeiten, die an den Server übermittelt werden. Dieses Anforderungsüberprüfungsfeature kann deaktiviert werden, wenn die Anwendung so konzipiert wurde, dass HTML-Daten sicher verarbeitet werden.
Gilt für ASP.NET 1.1 und ASP.NET 2.0.
Anforderungsüberprüfung, ein Feature von ASP.NET seit Version 1.1, verhindert, dass der Server Inhalte akzeptiert, die nicht codierte HTML enthalten. Dieses Feature wurde entwickelt, um einige Skripteinfügungsangriffe zu verhindern, bei denen Clientskriptcode oder HTML unwissentlich an einen Server übermittelt, gespeichert und dann anderen Benutzern präsentiert werden kann. Es wird weiterhin dringend empfohlen, alle Eingabedaten und html-codierungen zu überprüfen, wenn dies erforderlich ist.
Sie erstellen beispielsweise eine Webseite, die die E-Mail-Adresse eines Benutzers anfordert, und speichert diese E-Mail-Adresse dann in einer Datenbank. Wenn der Benutzer die SKRIPT-Warnung>("Hello from script")</SCRIPT> anstelle einer gültigen <E-Mail-Adresse eingibt, kann dieses Skript ausgeführt werden, wenn der Inhalt nicht ordnungsgemäß codiert wurde. Das Anforderungsüberprüfungsfeature von ASP.NET verhindert, dass dies geschieht.
Warum dieses Feature nützlich ist
Viele Websites wissen nicht, dass sie offen für einfache Skripteinfügungsangriffe sind. Ob der Zweck dieser Angriffe darin besteht, die Website durch Anzeige von HTML zu enttäuschen oder clientskript potenziell auszuführen, um den Benutzer auf die Website eines Hackers umzuleiten, Skripteinfügungsangriffe sind ein Problem, mit dem Webentwickler kämpfen müssen.
Skripteinfügungsangriffe sind ein Anliegen aller Webentwickler, unabhängig davon, ob sie ASP.NET, ASP oder andere Webentwicklungstechnologien verwenden.
Die ASP.NET Anforderungsüberprüfungsfunktion verhindert diese Angriffe proaktiv, indem nicht codierter HTML-Inhalt vom Server verarbeitet werden kann, es sei denn, der Entwickler entscheidet, diese Inhalte zuzulassen.
Was zu erwarten ist: Fehlerseite
Der folgende Screenshot zeigt einige Beispiel-ASP.NET Code:
Das Ausführen dieses Codes führt zu einer einfachen Seite, auf der Sie Text in das Textfeld eingeben, auf die Schaltfläche klicken und den Text im Beschriftungssteuerelement anzeigen können:
Wenn JavaScript jedoch eingegeben <script>alert("hello!")</script> und übermittelt werden soll, würden wir eine Ausnahme erhalten:
Die Fehlermeldung gibt an, dass ein "potenziell gefährlicher Request.Form-Wert erkannt" und weitere Details in der Beschreibung enthält, wie genau das aufgetreten ist und wie das Verhalten geändert wird. Beispiel:
Die Anforderungsüberprüfung hat einen potenziell gefährlichen Clienteingabewert erkannt, und die Verarbeitung der Anforderung wurde abgebrochen. Dieser Wert kann auf einen Versuch hinweisen, die Sicherheit Ihrer Anwendung zu kompromittieren, z. B. einen websiteübergreifenden Skriptingangriff. Sie können die Anforderungsüberprüfung deaktivieren, indem Sie in der Seitendirektive oder im Konfigurationsabschnitt festlegen validateRequest=false . Es wird jedoch dringend empfohlen, dass Ihre Anwendung in diesem Fall explizit alle Eingaben überprüft.
Deaktivieren der Anforderungsüberprüfung auf einer Seite
Um die Anforderungsüberprüfung auf einer Seite zu deaktivieren, müssen Sie das validateRequest Attribut der Page-Direktive auf Folgendes falsefestlegen:
<%@ Page validateRequest="false" %>
Vorsicht
Wenn die Anforderungsüberprüfung deaktiviert ist, können Inhalte an eine Seite übermittelt werden. es liegt in der Verantwortung des Seitenentwicklers, sicherzustellen, dass Inhalte ordnungsgemäß codiert oder verarbeitet werden.
Deaktivieren der Anforderungsüberprüfung für Ihre Anwendung
Um die Anforderungsüberprüfung für Ihre Anwendung zu deaktivieren, müssen Sie eine Web.config Datei für Ihre Anwendung ändern oder erstellen und das validateRequest-Attribut des <pages /> Abschnitts auf :false
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Wenn Sie die Anforderungsüberprüfung für alle Anwendungen auf Ihrem Server deaktivieren möchten, können Sie diese Änderung an Ihrer Machine.config Datei vornehmen.
Vorsicht
Wenn die Anforderungsüberprüfung deaktiviert ist, können Inhalte an Ihre Bewerbung übermittelt werden. es liegt in der Verantwortung des Anwendungsentwicklers, sicherzustellen, dass Inhalte ordnungsgemäß codiert oder verarbeitet werden.
Der folgende Code wird geändert, um die Anforderungsüberprüfung zu deaktivieren:
Wenn nun das folgende JavaScript in das Textfeld <script>alert("hello!")</script> eingegeben wurde, würde das Ergebnis wie folgt aussehen:
Um dies zu verhindern, müssen wir den Inhalt mit deaktivierter Anforderungsüberprüfung html-codieren.
So wird's gezeigt: HTML-Codieren von Inhalten
Wenn Sie die Anforderungsüberprüfung deaktiviert haben, empfiehlt es sich, Inhalte mit HTML-Codierung zu codieren, die für die zukünftige Verwendung gespeichert werden. Die HTML-Codierung ersetzt automatisch alle "<" oder ">" (zusammen mit mehreren anderen Symbolen) durch ihre entsprechende HTML-codierte Darstellung. Beispielsweise wird '
Inhalte können mithilfe der Server.HtmlEncode(string) API auf dem Server ganz einfach HTML-codiert werden. Inhalte können auch einfach MIT HTML decodiert werden, d. h., mit der Server.HtmlDecode(string) Methode wieder auf Standard-HTML zurückgesetzt werden.
Ergebnis: