Entmaskierung von HTML-Entitäten in JavaScript
Problem:
Beim Empfang von HTML-Strings aus einem XML -RPC-Backend, sie werden wörtlich gerendert, anstatt als HTML-Elemente gerendert zu werden. Dies deutet darauf hin, dass der HTML-Code über den XML-RPC-Kanal maskiert wird.
Lösung mit DOMParser:
Um HTML-Entitäten in JavaScript korrekt zu entmaskieren, ohne Sicherheitslücken zu schaffen, ist it Es wird empfohlen, die DOMParser-Schnittstelle zu verwenden. DOMParser erstellt aus der bereitgestellten HTML-Zeichenfolge einen DOM-Baum, der dann zum Abrufen des nicht maskierten Textinhalts verwendet werden kann.
Hier ist eine aktualisierte Version der htmlDecode-Funktion, die DOMParser verwendet:
function htmlDecode(input) { var doc = new DOMParser().parseFromString(input, "text/html"); return doc.documentElement.textContent; }
Die folgenden Beispiele zeigen, wie die aktualisierte Funktion verwendet wird:
console.log(htmlDecode("<img src='myimage.jpg'>")); // "<img src='myimage.jpg'>" console.log(htmlDecode("<img src='dummy' onerror='alert(/xss/)'>")); // ""
Im zweiten Beispiel das potenziell schädliche HTML Die Zeichenfolge ist korrekt entmaskiert, was zu einer leeren Zeichenfolge führt, um Cross-Site-Scripting-Schwachstellen (XSS) zu verhindern.
Das obige ist der detaillierte Inhalt vonWie kann ich HTML-Entitäten in JavaScript sicher entescapen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!