JavaSriptで入力値のサニタイズを行いたい時があります。
まず PHPの htmlspecialchars() の互換関数 を作成します。
function htmlspecialchars(str) { str = str.replace(/&/g,"&"); str = str.replace(/"/g,"""); str = str.replace(/'/g,"'"); str = str.replace(/</g,"<"); str = str.replace(/>/g,">"); return str ; }
htmlspecialchars()関数では対応できない文字を追加で変換する html_sanitize関数を作成します
function html_sanitize(str) { str = str.replace(/;/g,"!___escape_semicolon___!"); str = htmlspecialchars(str); str = str.replace(/!___escape_semicolon___!/g,";"); str = str.replace(/\//g,"/"); str = str.replace(/\\/g,"\"); str = str.replace(/=/g,"="); return str ; }
var a = 'ABCDEFG\\=/<script>alert("XSS");'; var b = html_sanitize(a); alert(a); alert(b);