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


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

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

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2009/04/14 19:19:17
  • 終了:2009/04/21 19:20:03

回答(3件)

id:ofk No.1

ofk回答回数12ベストアンサー獲得回数32009/04/15 08:05:43

ポイント27pt

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

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

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

id:ardarim No.2

ardarim回答回数892ベストアンサー獲得回数1422009/04/16 00:05:38

ポイント27pt

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

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

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


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

id:juner No.3

juner回答回数21ベストアンサー獲得回数02009/04/17 03:58:28

ポイント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も実行されることがありません。

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません