Einbetten von JSON-Objekten in script-tags

EDIT: Für die Zukunft, ich bin mit nicht xhtml-content-Typ-definition <!html>

Ich bin erstellen einer Webseite mit Django, und ich bin versucht zu einbetten beliebiger json-Daten in meine Seiten für die Verwendung durch client-side javascript code.

Lassen Sie uns sagen, dass meine json-Objekt {"foo": "</script>"}. Wenn ich den embed direkt,

<script type='text/javascript'>JSON={"foo": "</script>"};</script>

Das erste schließt das json-Objekt. (auch, es wird die Website anfällig für XSS, da das json-Objekt wird dynamisch generiert).

Wenn ich mit django HTML-escape-Funktion, die resultierende Ausgabe ist:

<script type='text/javascript'>JSON={&quot;foo&quot;: &quot;&lt;/script&gt;&quot;};</script> 

und der browser nicht interpretieren kann, kann der <script> tag.

Die Frage, die ich hier habe, ist,

  1. Die Charaktere bin ich wohl zu Flucht oder nicht Flucht in dieser situation?
  2. Ist es, automatisierte Methode zum durchführen dieser in Python /django?
  • Sie können entity-Referenzen (&lt;, &gt;) in <script> nur, wenn Sie mit XHTML. Wenn Sie mit den regulären HTML -, Sie können keine HTML-escape-Skript. Stattdessen, Folgen Sie slebetman Beratung und nur sicherstellen, dass / ist entkommen.
  • so, die Flucht nur Schrägstriche durch ausführen von string-Ersatz für / mit \/ gut genug ist?
  • ja, das sollte der Fall sein. Für mehr Informationen Browser Parsen der script-tag finden Sie unter HTML-5 tokenization:
  • Sorry, ich war falsch. Lassen Sie mich klarstellen.
InformationsquelleAutor Jeeyoung Kim | 2010-11-14
Schreibe einen Kommentar