HTML-und encoding-Attribut
Stieß ich auf eine post auf Meta SO und ich bin neugierig, was sind die feinen Unterschiede zwischen den un-codiert und codierte HTML-Zeichen, in HTML-Attributen, im Kontext: Sicherheit, best-practice-und browser-Unterstützung.
- Welche Unterschiede zwischen dem, was? Ihre Frage scheint zu fehlen ein paar Worte.
- Es könnte sein, dass der OP vergleicht <äpfel> und &Orangen; aber ich kann nicht sehen, die ähnlichkeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
HTML-Codierung ersetzt bestimmte Zeichen, die semantisch sinnvollen HTML-markup, mit den entsprechenden Zeichen dargestellt werden können, um den Benutzer, ohne das Parsen von markup.
Den wichtigsten und offensichtlichsten Zeichen sind <, >, &, und " die " ersetzt werden
<
,>
,&
, und"
bzw. Zusätzlich einen encoder ersetzen können high-order-Zeichen mit dem entsprechenden HTML-entity-encoding, so können Sie den Inhalt erhalten und ordnungsgemäß gerendert, selbst im Fall, dass die Seite an den browser gesendet wird als ASCII.HTML-Attribut encoding, auf der anderen Seite, ersetzt nur eine Teilmenge der Zeichen, die wichtig sind, um zu verhindern, dass eine Zeichenfolge zu brechen das Attribut eines HTML-Elements. Speziell, Sie würden in der Regel einfach zu ersetzen ", & und < mit
"
,&
, und<
. Dies ist, weil die Natur der Attribute, die Daten, die Sie enthalten, und wie werden Sie analysiert und interpretiert, die von einem browser oder der HTML-parser ist anders, als wie ein HTML-Dokument und dessen Elemente werden gelesen.In Bezug auf, wie man sich auf XSS, Sie wollen richtig bereinigt, strings aus einer externen Quelle (z.B. der Benutzer), damit Sie nicht brechen Ihrer Seite, oder noch wichtiger ist, injizieren Sie die markup-Tags und Skripts, das kann ändern oder zerstören Sie Ihre Anwendung oder Auswirkungen auf den Benutzer' Maschinen (unter Ausnutzung von browser oder Plattform-Schwachstellen).
Wenn Sie möchten, zur Anzeige von Benutzer-generierten Inhalten auf Ihrer Seite, würden Sie HTML-Codierung der Zeichenfolge und dann zeigen Sie es in Ihrem markup, und alles, was Sie eingegeben haben, werden angezeigt, buchstäblich, ohne sich Gedanken XSS oder gebrochen markup.
Wenn Sie benötigt, um zu befestigen, user-generated-content ein element mit einem Attribut (zum Beispiel ein
tooltip
auf einen link), Sie würden Attribut codieren, um sicherzustellen, dass der Inhalt nicht zu brechen den element-markup.Könnten, verwenden Sie einfach die gleiche Funktion für die HTML-Codierung zu behandeln Attribut encoding? Technisch, ja. Im Fall des meta-Frage, die Sie verknüpften, es klingt wie Sie HTML-Code, der verschlüsselt wurde, und decodieren Sie Sie dann mit diesem Ergebnis als Attribut-Wert, die Ergebnisse in codierter markup angezeigt wird, buchstäblich, wenn Sie Folgen.
Ich würde empfehlen, sich über OWASP XSS Prevention Regeln 1 und 2.
Eine kurze Zusammenfassung...
Regel 1 für HTML
Regel 2 für HTML-Gemeinsame Attribute