2016-08-22 7 views
1

Ich tue diesenJSON stringify Problem mit NodeJS und EJS

var o = <%- JSON.stringify(object) %>; 

in einem Code mit Ausgang folgenden

var o = {"_id":"57bafa202acb57b8ab000013","status":"incomplete","title":"<script>alert(1);</script>","updated_at":"2016-08-22T18:42:00+05:30","id":"57bafa202acb57b8ab000013"}; 

und die folgenden Fehler.

Uncaught SyntaxError: Invalid or unexpected token 

Es ist ein Titel Attribut mit einem "<Skript> alert (1); </script >" im Objekt. Wie gehe ich damit um?

+0

Wann tritt der Fehler auf? Offensichtlich fällt die 'JSON.stringify' nicht aus, wenn Sie diese Ausgabe haben. – Guy

+0

Es scheitert an dieser Linie selbst. JSON.stringify funktioniert einwandfrei. var o = <% - JSON.stringify (Objekt)%>; – prcoder

Antwort

1

Sie müssen die < ‚s, zum Beispiel ersetzen durch einen Unicode-Escape mit:

var o = <%- JSON.stringify(object).replace(/</g, '\\u003c') %>; 
+0

Das hat funktioniert. Würden Sie neben "<' and '>" weitere Zeichen vorschlagen, die mit Unocode versehen werden sollten? Wie funktioniert das, aber der obige Code nicht. 'var a = {" title ":" "}; JSON.parse (JSON.stringify (a)) ' – prcoder

+0

Die' & 'wäre auch ein guter Kandidat. Das Hauptproblem ist, dass Sie HTML mit JS mischen, und beide haben ihre eigenen Sonderzeichen. Bei HTML startet ' robertklep