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);