Frage

ich einen Editor haben die Benutzer hinzufügen, HTML können, die in der Datenbank und gerendert auf einer Webseite gespeichert wird. Da dies nicht vertrauenswürdige Eingaben ist, plane ich Microsoft.Security.Application.AntiXsSS.GetSafeHtmlFragment zu verwenden, um die HTML zu sanieren.

  • Should I santiize bevor in der Datenbank zu speichern oder vor den nicht vertrauenswürdigen Eingaben in die Webseite zu machen?
  • Gibt es einen Vorteil in die Quelle AntiXSS einschließlich Code in meinem Projekt, anstatt nur die DLL? (Vielleicht kann ich die weiße Liste anpassen?)
  • Welche Klasse Datei muss ich in aussehen für die tatsächliche Umsetzung der GetSafeHtmlFragment
War es hilfreich?

Lösung

Ich bin nicht einverstanden mit der ausgewählten Antwort aus zwei Gründen

  1. Wenn Sie codierte Daten gespeichert sind, müssen Sie einen Encoder holen, bevor Sie speichern. Was passiert, wenn man etwas als HTML gespeichert hat, sondern will auch sie in einem anderen Format verdrängen, zum Beispiel als JSON-Antwort oder als Teil eines XML-Dokuments? Sie haben nun ein eine HTML-codiertes Format, das Sie entschlüsseln müssen, dann kodieren im richtigen Format.
  2. Was passiert, wenn wir einen Fehler in den Encodern und schieben eine neue Version heraus entdecken? Nun, weil Sie nicht an dem Punkt der Ausgabe enthalten, die alle Ihre alten Daten enthalten können Dinge, die falsch codiert wurden. Sie können wieder kodieren, aber dann schlagen Sie doppelte Codierung Fragen, die richtig schmerzhaft sein kann, filtern.

Im Allgemeinen kodieren Sie an dem Punkt der Ausgabe und behandeln alle Daten aus einem Datenspeicher als nicht vertrauenswürdig standardmäßig kommen - nach allem, was passiert, wenn jemand es schafft, bearbeiten Sie Ihre Datenbank direkt oder über SQL-Injection

Andere Tipps

Haben Sie einen hören auf die OWASP Podcast 67 mit Jeff Williams auf XSS . Er spricht über nicht desinfizierende oder codieren, vor der Lagerung. Der Hauptgrund ist, dass, wenn (wenn) Bibliotheken als Reaktion auf neue Schwachstellen Ihrer Daten entwickeln wird stecken wieder in der alten Version sein. Natürlich bedeutet dies stoppen Sie nicht aus beliebigen Eingang gegen einen weißen Liste am Eintrittspunkt laufen und etwas außerhalb der zulässigen Bereich abzulehnen.

  • Sowohl
  • Nur wenn Sie es auf die Veränderung, die ich persönlich würde nicht tun
  • Die AntiXSS Klasse (da es als AntiXss.GetSafeHtmlFragment() genannt)

Sie können die in der Seitendirektive die Parameter ValidateRequest = "true" . Auf diese Weise werden alle Daten anfordern validiert und wenn es ein Validierungsproblem ist können Sie immer den Fehler abzufangen. Es verhindert auch, SQL-Injection-Threads und andere nicht nur möglich, XSS.

Bei numerischen Daten können Sie Integer-Überlauf oder den Missbrauch von Datentypen mit Int32.TryParse () bestätigen oder jede andere der TryParse Familie (Byte.TryParse Int16.TryParse ...)

Keine Notwendigkeit zu verwenden, andere Klasse oder zusätzliche Desinfektionsmethode.

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