javascriptでの文字列エスケープ
XSS対策としてjavascriptでの文字列エスケープについて調べた。
PHPや他の言語のようにサニタイズメソッドが用意されていないようなので
独自に実装するのが良さそう。
考慮する必要があるのは、
< → < > → > " → " ' → ' & → &
リプレースで対応
function htmlentities(str) { return String(str).replace(/&/g, "&") .replace(/"/g, """) .replace(/'/g, "'") .replace(/</g, "<") .replace(/>/g, ">"); }
innerText書き換えで対応
innerTextの書き換えでも対応可能。
innerHTMLではエスケープされないので注意。
var mess = '<script>alert("XSS!")</script>'; var spanTag = $(".span-text"); // innerText書き換え spanTag.text(mess); // innerHTMLではエスケープされないので注意 spanTag.html(mess);