現象
以下のサンプルのように、scriptタグ内に "...</script>" があると。
たとえ、ダブルクォートで囲っていても、閉じたタグとして扱われ、エラーになってしまう
# まず、静的なHTMLでわざわざこんな事しないが、
# 動的なサイトで悪意があるデータを入れられる可能性もあるので、、、
サンプル
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<button onClick="sample()">Click me!</button>
<script>
function sample() {
var msg = "<script>alert('Hello');</script>"
alert(msg);
}
</script>
</body>
</html>
対処策
案1 : <\/script> でエスケープ処理する
var msg = '...... <\/script>';
案2 : (無理矢理)分割する
var msg = '...... </' + 'script>';
案3 : Unicode の\uXXXX形式にエスケープ処理する
var msg = '...... \u003c/script\u003e";;