[JavaScript] サニタイジング(エスケープ) メソッド
1 min read
「"サニタイジング jquery"」などのような検索ワードで当ブログへのアクセスが沢山ありますので、JavaScript や jQuery でサニタイジングメソッドを実装してみました。
JavaScriptでエスケープ
function htmlentities(str) {
return String(str).replace(/&/g, "&")
.replace(/"/g, """)
.replace(/</g, "<")
.replace(/>/g, ">");
}
分かりやすいように上記のように書きましたが、以下のように短くできます。
function htmlentities(str) {
return String(str).replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
}
特に処理をしないのであれば、こちらの方がスマートですかね。
jQueryでエスケープ
ちょっと見当が付かなかったのですが、調べてみると色々とあるようです。$.htmlentities = function(val) {
return $("<div/>").text(val).html();
}
jQuery 上で生成したdiv
にテキストとして値を挿入。
そこからhtml()
(innerHTML)で値を取得するという荒業です。
素直にreplace()
した方が無難ではないかと個人的に思います。
ちなみに jQuery には$.parseHTML()
なんてメソッドがありますが、こちらはサニタイジングとは毛色が異なりますのでご注意を。
(<script>などを無効化してくれるようなやつです)