javascriptでサニタイズする方法を教えて下さい。


phpなら、htmlspecialcharsで出来ますが、javascriptには該当するようなものがないようです。
javascriptで受け取ったformの値をそのままdhtmlでhtml書き換えを行うときに、<script>alert('hoge');</script>など入力されても実行されないようにしたいと思います。

最悪、正規表現で<や>を実態参照に置き換える予定です。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/04/21 19:20:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:ofk No.1

回答回数12ベストアンサー獲得回数3

ポイント27pt

window.toStaticHTML関数がIE8から存在します。言っていることはそれでできます。

ただ、これの関数はクロスブラウザなものではありませんし、JavaScript実装もちょっと見あたりません。また、サニタイズされた結果も意図しないものになるかもしれません。

無難に実体参照に置き換えることを行った方が良いでしょう。

id:ardarim No.2

回答回数897ベストアンサー獲得回数145

ポイント27pt

基本的には自作するしかないです。

こちらが参考になるかと思います。

escapeHTML の実装 3 パターン (ベンチマーク付き) - (new Hatena).blog()


prototype.jsのString.escapeHTMLのように実装済みのメソッドとして提供されているものを活用すると言うのも一つの手です。

id:juner No.3

回答回数21ベストアンサー獲得回数0

ポイント26pt

http://chargma.spaces.live.com/blog/cns!2839DAA143E306A1!166.entry

でやっているように、

function escape_html_tag(string) {
     return string.replace(/[&<>"']/g, function(match) {
          return {
               '&' : '&',
               '<' : '<',
               '>' : '>',
               '"' : '"',
               "'" : '''
          }[match];
     });
}

とやればどうでしょうか?

こうすることでタグ周りはサニタイズされるのでjavascriptも実行されることがありません。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません