Javascript を実行されないようにする
以下のように HTML に埋め込まれた場合、button をクリックすると javascript が実行されてしまいます。
<% $data="hoge onclick=alert('ぐえ〜〜!')" %>
<input type="button" value=<%= $data %>>
「 " 」で変数を囲うと実行されなくなります。
<input type="button" value="<%= $data %>">
文字のエスケープ処理
すべての文字をエスケープするのは、非現実的なので最低でも「 & 」、「 < 」、「 > 」、「 " 」はエスケープしておきます。
function sanitize(str){
return String(str).replace(/&/g,"&")
.replace(/</g,"<")
.replace(/>/g,">")
.replace(/"/g,""")
}
サニタイズとエスケープどちらを使うのかという議論もなされているようです。
- sanitize(サニタイズ):消毒する