JavaScriptプログラムに関する各種メモ書き

JavaSriptで入力値のサニタイズ(PHPの htmlspecialchars()関数 )

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,"&#59;");
    str = str.replace(/\//g,"&#47;");
    str = str.replace(/\\/g,"&#92;");
    str = str.replace(/=/g,"&#61;");
    return str ;
}
使い方の例
var a = 'ABCDEFG\\=/<script>alert("XSS");';
var b = html_sanitize(a);
alert(a);
alert(b);

関連エントリー

No.888
09/18 12:50

edit

正規表現