Es stellt sich die folgende aus, die wie gültig Javascript aussieht, ist nicht:Was ist der richtige Weg, um ein Inline-Javascript-Objekt zu verschlüsseln, um es vor XSS zu schützen?
<html>
<body>
<script>
json = {test: "</script><script>alert('hello');</script>"};
</script>
</body>
</html>
Der gleiche Text, wenn JSON über ein Ajax-api zurück funktioniert wie erwartet. Wenn es jedoch inline gerendert wird, führt dies zu grundlegenden XSS-Problemen.
Ist eine beliebige, richtige JSON-Zeichenfolge angegeben, was muss ich auf der Serverseite tun, um sie für das Inline-Rendering sicher zu machen? kann es
json = {test: "<\/script><script>alert('hello');<\/script>"};
Bedeutung, ich habe keine Ahnung, wie meine zugrunde liegende Bibliothek kodiert, das /
char,:
EDIT Im Idealfall durch die folgende Zeichenfolge als auch ich möchte das Update arbeiten habe gewählt, es zu kodieren, oder es kann nicht haben. (So seine wahrscheinlich ein regex fix robuster ist)
Wenn Sie es inline darstellen möchten, müssen Sie sicherstellen, dass es nicht die Zeichenfolge "" enthält. –
oder Ich denke ... Ich mache mir Sorgen über die Leistung mit einer einfachen String-Verkettung beheben und auch dass es andere seltsame Probleme, die ich nicht kenne –
Es sei denn, es ist etwas seltsam passiert, entgeht die zugrunde liegende Bibliothek nicht den Schrägstrich . Es hat keine spezielle Bedeutung in einer JavaScript-Zeichenfolge, daher gibt es keinen Grund, der Zeichenfolge zu entkommen. – Guffa