2009-04-07 21 views
12

Ich versuche gerade, meine klassische ASP-Anwendung von XSS zu sichern. Ich stieß auf das AntiXSS von Microsoft im Netz und ich fragte mich, ob das mit einer klassischen Anwendung funktionieren würde?Anti XSS und Classic ASP

Wenn nicht, hast du irgendwelche Ideen, wie ich die Saiten sanieren könnte?

Antwort

13

Strings sanieren I kodieren alle Ausgaben HTML würde, auf diese Weise müssen Sie Cross-Site-Scripting-Attacken nicht Dink um mit Sonderzeichen oder große Regex Ausdrücke

Server.HTMLEncode(string) 

Die beiden wichtigsten Gegenmaßnahmen zu verhindern sind zu:

  • Eingabebeschränkung.
  • Codierung des Ausgangs.

über How To: Prevent Cross-Site Scripting in ASP.NET (ich weiß nicht i'ts klassische Asp, aber es gibt ähnliche Prinzipien)

+0

@Steoates: Dies hier ist im Allgemeinen eine ziemlich anständige Lösung. –

+0

Und wenn Sie Rich Text anzeigen müssen (Altsystem, Seufzer), ist das Schreiben einer Bereinigungsfunktion für die Verwendung mehrerer regulärer Ausdrücke mindestens ein Schritt in die richtige Richtung. –

+0

Laut OWASP ist HTMLEncoding einfach nicht genug. Siehe: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Why_Can.27t_I_Just_HTML_Entity_Encode_Untrusted_Data.3F – blischalk

0

Nicht einfach - Sie müssten einen COM-aufrufbaren Wrapper erstellen, auf den Servern installieren, etc. Ich glaube einfach nicht, dass es eine geeignete Passform für "klassische" ASP ist.

1

Wenn Sie bestimmte HTML-Tags erlauben müssen (wie ich in meinem aktuellen Projekt zu tun), können Sie einen regulären Ausdruck verwenden nur diese Tags zu ermöglichen und keine anderen, etwa so:

set objRegExp = new RegExp 
with objRegExp 
    .Pattern = "<^((b)|(i)|(em)|(strong)|(br))>.*</.*>" 
    .IgnoreCase = varIgnoreCase 
    .Global = True 
end with 
cleanString = objRegExp.replace(originalString, "") 
0
<% 
Response.AddHeader "X-XSS-Protection", "1" 
%>