Ich habe einen Editor, mit dem Benutzer HTML hinzufügen können, das in der Datenbank gespeichert und auf einer Webseite gerendert wird. Da dies eine nicht vertrauenswürdige Eingabe ist, möchte ich Microsoft.Security.Application.AntiXsSS.GetSafeHtmlFragment
verwenden, um das HTML zu bereinigen.
Ich stimme der gewählten Antwort aus zwei Gründen nicht zu
Im Allgemeinen codieren Sie am Ausgabepunkt und behandeln alle Daten, die aus einem Datenspeicher kommen, standardmäßig als nicht vertrauenswürdig. Was passiert, wenn jemand Ihre Datenbank direkt oder per SQL-Injection bearbeitet?
Hören Sie sich den OWASP-Podcast 67 mit Jeff Williams auf XSS an . Er redet darüber, dass er vor der Speicherung keine Desinfektion oder Kodierung vorgenommen hat. Der Hauptgrund dafür ist, dass Ihre Daten in der alten Version hängen bleiben, wenn sich Bibliotheken als Reaktion auf neue Schwachstellen weiterentwickeln. Das hindert Sie natürlich nicht daran, irgendeine Eingabe gegen eine Whitelist am Einstiegspunkt auszuführen und alles außerhalb des akzeptablen Bereichs abzulehnen.
Sie können in der Seitenanweisung den Parameter ValidateRequest="true" verwenden. Auf diese Weise werden alle Request-Daten validiert und wenn es ein Validierungsproblem gibt, können Sie den Fehler immer abfangen. Es verhindert auch SQL-Injection-Threads und andere nicht nur mögliche XSS.
Mit numerischen Daten können Sie den Integer-Überlauf oder den Missbrauch von Datentypen mit Int32.TryParse () oder einer beliebigen anderen TryParse-Familie (Byte.TryParse Int16.TryParse ...) validieren.
Sie müssen keine andere Klasse oder zusätzliche Desinfektionsmethode verwenden.
Tags und Links asp.net xss antixsslibrary html-sanitizing