主なポイントは、「<」を作るために「\ <」と「>」に「>」インラインスクリプトの下に避けるようにすることです:すべてのブラウザエンジンで " <"を "<" and ">"と ">"扱いますか?
<script>
var foo = "</script><script>alert('bug');</script><script>"; // the value of foo is generated from server
</script>
FOOの文字列値は、サーバ側から生成されます。そこで、「<」を「\ <」に、「>」を「>」に変更します。 (私が知っているそこに「>」を「& GT;」エスケープする必要があるという議論があるが、それはこの場合には考慮していない。)
だから、期待される結果は次のとおりです。のために
<script>
var foo = "\</script\>\<script\>alert('bug');\</script\>\<script\>"; // the value of foo is generated from server
</script>
IE7/8とFirefoxは、HTMLレンダリングエンジンは、<スクリプト>タグとしてjavascriptの文字列で\ <スクリプト\ >を扱わないだろう、とJavaScriptエンジンは、まだ文字列として "<スクリプト>" それを取ります。しかし、すべてのブラウザがこのように ">"と "\ <"を扱うかどうかはわかりません。この種のブラウザはすべて標準ですか?
FYI、クロムとサファリはそれのいずれか – cgp
参照http://jsbin.com/ecefo – cgp