Der wichtigste Punkt zu machen „<“ auf „\ <“ und „>“ auf „>“ ist unter Inline-Skript zu machen vermeiden:Behandeln alle Browser-Engines " <" als "<" and ">" als ">"?
<script>
var foo = "</script><script>alert('bug');</script><script>"; // the value of foo is generated from server
</script>
Der String-Wert von foo wird von Server-Seite erzeugt. Wir planen daher, "<" in "\ <" und ">" in ">" zu ändern. (Ich weiß, es ist Argument, dass ">" entwertet werden sollte "& gt;", aber es ist nicht in Betracht in diesem Fall.)
Also, das erwartete Ergebnis ist:
<script>
var foo = "\</script\>\<script\>alert('bug');\</script\>\<script\>"; // the value of foo is generated from server
</script>
Für IE7/8 und Firefox, werden die HTML-Rendering-Engine \ < Skript \ > in JavaScript-String als <Skript> Tag und JavaScript-Engine nimmt nicht behandeln es noch als String "<Skript>". Ich bin mir jedoch nicht sicher, ob alle Browser ">" und "\ <" auf diese Weise behandeln. Ist diese Art von Standard für alle Browser?
FYI, Chrome und Safari tun es nicht entweder – cgp
sehen http://jsbin.com/ecefo – cgp