Deutsch

Entwicklertools · HTML-Entity-Escaper

Warum HTML-Escape in Skript-, Onclick- und Href-Attributen nicht ausreicht

· Warum es wichtig ist

html Sicherheit URL-Kodierung

Warum HTML-Escape in Skript-, Onclick- und Href-Attributen nicht ausreicht, angezeigt als browsersicheres Zeichenreferenzdiagramm
Original-ToolAcre-Vektorillustration

Entity-Escape schützt HTML-Text und Attributwerte, aber ein Wert innerhalb eines Skriptblocks, eines Ereignishandlers oder einer URL wird von einem anderen Parser gelesen. In diesem Beitrag werden die einzelnen Kontexte und die dafür erforderliche Codierung erläutert.

Der maskierte Wert, der noch ausgeführt wurde – eine Benutzerzeichenfolge in einem Onclick-Handler und warum „ er nicht gespeichert wurde

Der maskierte Wert, der trotzdem ausgeführt wurde – eine Benutzerzeichenfolge in einem Onclick-Handler und warum „ er nicht gespeichert wurde. Ein onclick-Attribut wird als HTML geparst und dann als JavaScript kompiliert. Auch wenn nur das HTML-Trennzeichen kodiert wird, kann es dennoch zu einem gefährlichen Programm kommen, nachdem der Browser diesen Attributwert dekodiert hat.

Um den HTML-Escape-Javascript-Kontext zu überprüfen, erstellen Sie den Escape-Wert für einen Entwickler, der alles maskiert hat und trotzdem einen XSS-Bericht erhalten hat. Behalten Sie die Ausführung eines Benutzers bei, während der Kontext eines verschachtelten Parsers eine Zeichenfolge innerhalb eines Onclicks erzeugt. Identifizieren Sie, wo der Handler ist und warum Quot verbraucht wird. Die Beobachtung, dass es nicht gespeichert wurde, bezieht sich nur auf HTML-Text.

Ein Dokument, mehrere Sprachen – HTML, JavaScript, URLs und CSS haben jeweils ihre eigenen Parser- und Escape-Regeln

Ein Dokument, mehrere Sprachen – HTML, JavaScript, URLs und CSS haben jeweils ihre eigenen Parser- und Escape-Regeln. Ein einzelnes Dokument kann HTML-, JavaScript-, URL- und CSS-Parser aufrufen. Jede Sprache weist der Interpunktion eine andere Bedeutung zu, sodass eine generische „Escaped“-Flagge nicht jedes Ziel sicher beschreiben kann.

Ein Entwickler, der alles umgangen hat und trotzdem einen XSS-Bericht erhalten hat, kann ein Dokument in mehreren Sprachen testen, indem er HTML-Javascript-URLs aufzeichnet und bevor der Kontext des verschachtelten Parsers übergeben wird. Vergleichen Sie die CSS-Dateien mit den jeweils anderen und suchen Sie den Parser, der für den eigenen Parser und Escape verantwortlich ist. Dieses HTML-Escape-Javascript-Kontextergebnis erklärt Regeln, nicht ausführbare Kontexte.

Innerhalb von <script> – warum Entitäten dort nicht dekodiert werden und stattdessen JSON oder JavaScript-String-Escapezeichen erforderlich sind

Innerhalb von <script> – warum Entitäten dort nicht dekodiert werden und stattdessen JSON oder JavaScript-String-Escapezeichen erforderlich sind. Im Skript-Rohtext werden benannte HTML-Referenzen nicht wie normaler Text dekodiert. Serialisieren Sie Daten als JSON mit einem bewährten Serialisierer, vermeiden Sie Inline-Skriptinterpolation und berücksichtigen Sie schließende Skriptsequenzen.

Isolieren Sie Skript-Warum-Entitäten in einem kurzen Kontextbeispiel für einen verschachtelten Parser. Die Anzeige wird dort nicht als wörtliche Quelle dekodiert, sie folgt JSON oder Javascript an ihr Ziel, und die Namens-API-Lesezeichenfolge ist mit Escapezeichen versehen. Für HTML, das dem Javascript-Kontext entkommt, bleibt stattdessen der Parser-gebundene Beweis bestehen.

Event-Handler-Attribute – zuerst als HTML dekodiert und dann als JavaScript ausgeführt, daher gelten zwei Escape-Ebenen

Event-Handler-Attribute – zuerst als HTML dekodiert und dann als JavaScript ausgeführt, daher gelten zwei Escape-Ebenen. Event-Handler-Attribute kombinieren zwei Grammatiken und sollten vermieden werden. Das Bindungsverhalten mit addEventListener hält Daten von der ausführbaren Quelle fern und macht verschachteltes HTML-plus-JavaScript-Escapezeichen überflüssig.

Behandeln Sie dekodierte Ereignishandlerattribute als Grenzexperiment. Ein Entwickler, der alles umgangen hat und dennoch einen XSS-Bericht erhalten hat, sollte ihn zunächst als HTML beibehalten, einen verschachtelten Parser-Kontextvorgang ausführen und ihn dann zeichenweise als Javascript ausführen lassen, bevor er ihn auf zwei Ebenen ändert. Die Behauptung über das Escapen von apply endet auf dieser HTML-Ebene.

href und src – Prozentkodierung für den Wert plus Entitäts-Escape für das Attribut und das javascript:-Schema-Problem

href und src – Prozentkodierung für den Wert plus Entitäts-Escape für das Attribut und das javascript:-Schema-Problem. Erstellen und validieren Sie für href und src zunächst die URL, lehnen Sie unerwünschte Schemata ab, kodieren Sie Komponenten in Prozent und setzen Sie dann den endgültigen Attributwert in Anführungszeichen mit HTML-Escapezeichen. Durch die Entitätskonvertierung allein werden Javascript:-URLs nicht abgelehnt.

Reproduzieren Sie href und src Prozent mit harmlosen Eingaben anstelle von Kundenmaterial. Zeichnen Sie die Codierung für den Wert auf, beobachten Sie das Plus der Entitäts-Escape-Funktion und zählen Sie jeden absichtlichen Kontextdurchlauf des verschachtelten Parsers. Dieser HTML-Escape-Javascript-Kontextpfad ermöglicht es einem Entwickler, der alles entkommen hat und trotzdem einen XSS-Bericht erhalten hat, das Attribut und das Problem mit dem Javascript-Schema ohne zu raten auszuwerten.

Arbeitsbeispiel: ein Wert, der in Text, in einem Attribut, in onclick und in href platziert wird – jeweils die richtige Codierung

Arbeitsbeispiel: ein Wert, der in Text, in einem Attribut, in onclick und in href platziert wird – jeweils die richtige Codierung. Derselbe Wert gehört in Text durch HTML-Escape, in ein Datenattribut durch die Behandlung von Anführungszeichenattributen, in Code durch strukturierte Serialisierung und in eine URL durch URL-Konstruktion plus Schemaprüfungen.

Platzieren Sie während der Kontextüberprüfung durch den verschachtelten Parser einen bearbeiteten Beispielwert, einen in Text eingefügten Wert und ein Attribut in onclick nebeneinander. Ein Entwickler, der alles umgangen hat und dennoch einen XSS-Bericht erhalten hat, kann dann entscheiden, ob und in href sich das bei der Konvertierung oder im Nachhinein geändert hat. Behalten Sie die Schlussfolgerung über die korrekte Codierung für jeden aus allgemeinen Sicherheitsansprüchen bei.

Was hiervon nicht abgedeckt wird: CSS-Injection und Template-Engine-spezifische Helfer

Was dies nicht abdeckt – CSS-Injection und Template-Engine-spezifische Helfer. CSS-Injection und Template-Engine-spezifische APIs werden weggelassen, da sie zusätzliche Grammatiken und Rahmenverträge einführen. Die sichere Wahl ist die Verwendung von APIs, die Daten vom Code trennen.

Definieren Sie, was dies nicht bedeutet, bevor Sie den Nested-Parser-Kontext ausführen. Speichern Sie die Cover-CSS-Injektion und prüfen Sie sie als Kontrolle, überprüfen Sie die Codepunkte hinter Template-Engine-spezifischen Helfern und ordnen Sie verschachtelte Parser-Kontextnachweise dem nächsten Interpreter zu. Dadurch werden Nested-Parser-Kontextbeweise für einen Entwickler überprüfbar, der alles umgangen hat und dennoch einen XSS-Bericht erhalten hat, der untersucht, ob HTML-Javascript-Kontext entkommt.

Fazit: Codieren für den Parser, der es liest – wie der HTML-Entity-Escaper die HTML-Ebene verarbeitet und wie der URL-Encoder und -Decoder im selben Produkt die URL-Ebene verarbeitet

Fazit: Codieren für den Parser, der es liest – wie der HTML-Entity-Escaper die HTML-Ebene verarbeitet und wie der URL-Encoder und -Decoder im selben Produkt die URL-Ebene verarbeitet. ToolAcre deckt die HTML-Ebene ab und sein URL-Panel deckt die Darstellung von URL-Komponenten ab. Keines der Panels gewährt Autorisierung, bereinigt Markup, validiert Schemata oder schützt SQL-Anweisungen.

Verbinden Sie die Takeaway-Kodierung für die mit einer beobachtbaren verschachtelten Parser-Kontextausgabe. Behalten Sie den Parser bei, der neben dem One-Pass-Ergebnis liest, und überprüfen Sie dann, wie der HTML-Entity-Escaper das verarbeitet. Ein Entwickler, der alles umgangen hat und dennoch einen XSS-Bericht erhalten hat, kann jetzt die HTML-Ebene und die Suche als schmalen HTML-Escape-Javascript-Kontext überprüfen. Die praktische Entscheidung hinter diesem Artikel ist spezifisch: Entity-Escape schützt HTML-Text und Attributwerte, aber ein Wert innerhalb eines Skriptblocks, eines Ereignishandlers oder einer URL wird von einem anderen Parser gelesen. In diesem Beitrag werden die einzelnen Kontexte und die dafür erforderliche Codierung erläutert. Die Aktion des Lesers ist ebenso konkret: Verlinkt zum HTML-Entity-Escaper für den Attribut-Escape-Schritt und demonstriert den Wechsel zum URL-Encoder- und Decoder-Panel für den href-Wert ohne Seitenladevorgang.