2017-09-18 1 views
2

Ich habe auf ASP.NET Projekt arbeiten Mein Request Validator Standard ist true Als Ergebnis gefährliche Skript-Attacken sind nicht erlaubt und ASP.NET wirft Fehler mich Dangerous AnfragenASP.NET anfordern Validator erlaubt Skripte

<script>alert('hello')</script> 

Das ist sehr gut. Sicherheit

Aber warum meine unten Skript nicht blockiert ist, Validator ASP.NET-Anforderung unter Skript nicht

<%tag style=xss:expression(alert('hello'))> 

Dies wurde nicht blockiert blockiert und wurde

Meine Fragen

1) <%tag style=xss:expression(alert('hello'))> 
why this request was not blocked 

2) <script>alert('hello')</script> 
This request was blocked and ASP.NET throws me to yellow error page 
Is there any way to show error on the same page 
gefeuert

Bitte Hilfe

Danke

Antwort

0

1) Dieser Artikel könnte helfen Sie verstehen validateRequest besser: https://infosecauditor.wordpress.com/2013/05/27/bypassing-asp-net-validaterequest-for-script-injection-attacks/

Einige Auszüge:

ValidateRequest vorhanden ist in ASP.NET-Versionen 1, 2 und 3. ASP.NET Version 4 tut Verwenden Sie nicht den ValidateRequest-Filter.

ValidateRequest validiert Benutzereingabe und gibt false zurück, wenn die folgende Bedingungen erfüllt sind:

<a-z  – A ‘<’ character followed by an alpha character. 
<!, </, <?  – A ‘<’ character followed by a special character. 
&,# – A special character. 

Sie können Ihre eigenen benutzerdefinierten Validator schreiben, die RequestValidator erstreckt & Pflege dieser Dinge nimmt. Eg:

2) Is there any way to show error on the same page

Ja. aber dann werden Sie um die Eingabe bestätigen müssen selbst sagen & bye zu asp.net Vorteile https://gargmanoj.wordpress.com/tag/httprequestvalidationexception/

Nr weil ein Anwendungsfehler passiert & asp.net gestoppt hat es verarbeitet wird. Aber Sie können definitiv eine benutzerdefinierte Fehlerseite anzeigen.

Siehe Antwort here & here:

protected void Application_Error(object sender, EventArgs e) 
{ 
    var context = HttpContext.Current; 
    var exception = context.Server.GetLastError(); 
    if (exception is HttpRequestValidationException) 
    { 
HttpContext.Current.Server.ClearError(); 
HttpContext.Current.Response.Redirect("~/ErrorPage.aspx"); 

     return; 
    } 
} 

Es gibt auch eine Option für AntiXss Encoder-Klasse für die Ausgangswerte codiert.

<httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder" /> 
Verwandte Themen