2016-07-14 28 views
0

umgehen Ich bin derzeit versuchen, meine Website von XSS-Attacken in der Url zu sichern. Zum Beispiel, wenn der Angreifer Firefox verwendet, können sie folgendes tun:Wie mit XSS in einer URL-Abfragezeichenfolge in ASP.net 3.5 mit C#

Und das Skript wird ausgeführt. Ich suche jetzt seit ein paar Tagen und kann keine Lösung finden, die funktioniert. Momentan habe ich die AntiXSS-Bibliothek von MS ausprobiert. Ich glaube nicht, dass es funktioniert richtig ich kodiert die gesamte URL wie so

Mircosoft.Security.Application.Encoder.HtmlEncode(path); 

Ich habe versucht, alle anderen Methoden in dieser Klasse auch und das Skript noch vor dem Laden der Seite ausgeführt wird. Ich verwende ASP.net 3.5 mit Webforms und kann kein Upgrade durchführen.

+0

https://www.owasp.org/index.php/ Testing_for_Reflected_Cross_site_scripting_ (OTG-INPVAL-001) – MethodMan

+0

Um eine vollständige Antwort zu geben, ist es notwendig zu sehen, wo und wie genau Sie den codierten Wert verwenden. –

+0

Der codierte Pfad wird dann an app.Context.RewritePath gesendet, der zur Init-Methode der IHttpModule-Klasse zurückkehrt. – eskers

Antwort

0

https://www.microsoft.com/en-us/download/details.aspx?id=28589

sie haben diese DLL, die im Grunde alles, was Sie tun müssen, ist die sanitize Methode zu verwenden, und wenn es eine Änderung zwischen dem ursprünglichen Wert und dem Wert hygienisiert, das bedeutet, dass es könnte ein Versuch sein, für XSS, und Sie werfen entweder alles oder verwenden Sie einfach den bereinigten Wert.

Verwenden Sie keine Codierungsmethode, es gibt eine Methode namens "Sanitize".

EDIT: Codebeispiel

val = Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(val); 
val = System.Web.HttpUtility.HtmlDecode(val); 

EDIT 2: https://www.nuget.org/packages/HtmlSanitizationLibrary/

die dll ich verwende ist HtmlSanitizationLibrary.dll

+0

Dies ist die aktuelle Bibliothek, die ich verwende, es gibt keine Sanitize-Methode. – eskers

+0

bearbeitetes Codebeispiel – bresleveloper

+0

Das ist seltsam, ich sehe die Sanitizer-Klasse nicht, ich habe im Assembly Explorer, im Objektbrowser nachgesehen und die Autovervollständigung verwendet. Ich habe auch jede Version der AntiXssLibrary in meinem Projekt Ich habe nur die folgenden AntiXss, Encoder, UnicodeCharacterEncoder – eskers