Frage

Ich lief nur über eine Frage mit einer Antwort, die AntiXSS Bibliothek darauf hindeutet, Cross-Site-Scripting zu vermeiden. Klang interessant, die Msdn Blog lesen, scheint es nur eine Htmlencode zu liefern () Methode. Aber ich bereits verwenden HttpUtility.HtmlEncode ().

Warum sollte ich AntiXss.HtmlEncode verwenden über HttpUtility.HtmlEncode?

Ja, ich bin nicht die erste Frage zu stellen. Und in der Tat, wird Google einige Antworten , vor allem

  • Eine weiß-Liste statt schwarz-Liste Ansatz
  • A 0,1 ms Leistungsverbesserung

Nun, das ist schön, aber was es für mich bedeutet? Ich weiß nicht so viel über die Leistung von 0,1 ms kümmern und ich weiß nicht wirklich das Gefühl, dass das Herunterladen und das Hinzufügen eines weitere Bibliothek Abhängigkeit für Funktionalität, die ich schon habe.

Gibt es Beispiele für Fälle, in denen die AntiXSS Umsetzung einen Angriff verhindern würde, dass die HttpUtility Implementierung würde das nicht?

Wenn ich weiterhin die HttpUtility Implementierung verwenden, bin ich in Gefahr? Was ist dieser 'Fehler' ?

War es hilfreich?

Lösung

ich eine Antwort nicht speziell auf Ihre Frage, aber ich würde, dass die weiße Liste vs schwarze Liste Ansatz weisen darauf hin, nicht nur „schön“. Es ist wichtig. Sehr wichtig. Wenn es um Sicherheit geht, ist jede Kleinigkeit wichtig. Denken Sie daran, dass mit Cross-Site Scripting und Cross-Site-Request-Forgery , auch wenn Ihre Website nicht angezeigt sensible Daten, könnte ein Hacker Ihre Website durch die Injektion von Javascript infizieren und es verwendet, sensible Daten von einem anderen Standort zu erhalten. Damit es richtig kritisch ist.

OWASP-Richtlinien geben Sie eine Whitelist-Ansatz verwenden. PCI Compliance-Richtlinien geben Sie dies auch in Coding-Standards (da sie sich beziehen tot er OWASP-Richtlinien).

Auch hat die neuere Version der Bibliothek AntiXSS eine schöne neue Funktion. .GetSafeHtmlFragment (), die für die Fälle, schön ist, wo Sie HTML-Code in der Datenbank gespeichert werden sollen und haben es den Benutzer als HTML angezeigt

Auch, wie für die „Fehler“, wenn Sie richtig sind Codierung und nach allen Sicherheitsrichtlinien, sind Sie parametrisierte gespeicherte Prozeduren verwenden, so werden die einfachen Anführungszeichen richtig gehandhabt werden, Wenn Sie nicht richtig Codierung, nicht aus dem Regal Bibliothek wird Sie in vollem Umfang zu schützen. Die AntiXSS Bibliothek sollte ein Werkzeug zu verwenden ist, nicht als Ersatz für Wissen. Unter Berufung auf der Bibliothek es richtig für Sie einen wirklich guten Pinsel gute Bilder zu machen, ohne einen guten Künstler würden erwarten.

Bearbeiten - Added

Wie in der Frage gestellt, ein Beispiel, wo die Anti xss Sie schützen und HttpUtility werden nicht:

HttpUtility.HtmlEncode und Server. Htmlencode nicht verhindern, dass Cross-Site-Scripting

Das ist nach Ansicht des Autors, though. Ich habe es nicht persönlich getestet.


Es klingt wie Sie auf Ihren Sicherheitsrichtlinien sind, also etwas, ich brauche vielleicht nicht, Ihnen zu sagen, aber nur für den Fall eines weniger erfahrenen Entwickler werden dies dort zu lesen, sage der Grund ich, dass die weiß-Liste Ansatz ist von entscheidender Bedeutung ist dies.

Im Moment heute HttpUtility.HtmlEncode kann erfolgreich jeden Angriff blockieren, da draußen, einfach durch Entfernen / Codierung < und >, und ein paar anderen „bekannt potenziell unsicheren“ Zeichen, aber jemand versucht immer, neue Wege zu denken nur bekannt sicheren (Whitelist) Inhalt ist als viel leichter bricht in. Unter Berücksichtigung versucht jeden möglichen unsicheren wenig Eingang zu denken, ein Angreifer möglicherweise bei Ihnen (black-list-Ansatz) werfen könnte.

Andere Tipps

In Bezug auf, warum Sie einen über die andere verwenden würden, die Ansicht, dass die AntiXSS Bibliothek häufiger veröffentlicht wird als die ASP.NET-Framework - da, wie David Stratton sagt ‚immer jemand versucht, neue Wege zu denken, zu brechen in', wenn jemand mit einer dagegen der AntiXSS Bibliothek kommen tut, ist viel wahrscheinlicher, zu verteidigen eine aktualisierte Version zu erhalten.

Im Folgenden werden die Unterschiede zwischen Microsoft.Security.Application.AntiXss.HtmlEncode und System.Web.HttpUtility.HtmlEncode Methoden:

  1. Anti-XSS verwendet die Whitelisting-Technik, die manchmal als das Prinzip des Einschlüsse bezeichnet, Schutz vor Cross-Site Scripting (XSS) Angriffen zu bieten. Dieser Ansatz funktioniert, indem man zuerst einen gültigen oder zulässigen Zeichensatz definiert und kodiert etwas außerhalb dieses Satzes (ungültige Zeichen oder potenzielle Angriffe). System.Web.HttpUtility.HtmlEncode und andere Codierungsverfahren in diesem Namensraum Verwendung Prinzip der Ausschlüsse und kodieren nur bestimmte Zeichen als potentiell gefährlich wie <,> bezeichnet, & und 'Zeichen.

  2. Die Liste der Anti-XSS-Bibliothek von weiß (oder Safe) Zeichen unterstützen mehr als ein Dutzend Sprachen (Griechisch und Koptisch, Kyrillisch, Kyrillisch Supplement, Armenisch, Hebräisch, Arabisch, Syrisch, Arabisch Supplement, Thaana, NKo und mehr)

  3. Anti-XSS-Bibliothek wurde entwickelt, um speziell XSS-Angriffe zu verringern, während HttpUtility Codierverfahren geschaffen werden, dass ASP.NET Ausgabe, um sicherzustellen, keine HTML brechen.

  4. Performance - das durchschnittliche Delta zwischen AntiXss.HtmlEncode() und HttpUtility.HtmlEncode() ist 0,1 Millisekunden pro Transaktion.

  5. Anti-XSS Version 3.0 bietet eine Testumgebung, die es Entwicklern sowohl XSS Validierung und Performance-Tests laufen zu lassen.

Die meist XSS-Schwachstellen (jede Art von Verletzlichkeit, tatsächlich) basiert ausschließlich auf der Tatsache, dass bestehende Sicherheits „erwarten“ nicht bestimmte Dinge zu geschehen. Whitelist-only Ansätze sind eher geneigt, diese Szenarien standardmäßig zu behandeln.

Wir verwenden die Whitelist-Ansatz für Microsofts Windows Live-Sites. Ich bin sicher, dass es eine Reihe von Angriffen auf die Sicherheit, die wir noch nicht gedacht haben, so bin ich mehr zufrieden mit dem paranoiden Ansatz. Ich vermute, es gibt Fälle, wo die schwarze Liste Lücken ausgesetzt, dass die weiß-Liste nicht, aber ich könnte Ihnen die Details nicht sagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top