人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

よろしくお願いします。

●質問者: cbic
●カテゴリ:ウェブ制作
✍キーワード:hoge HTML JavaScript PHP サニタイズ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ofk
●27ポイント

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

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

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


2 ● ardarim
●27ポイント

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

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

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


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


3 ● juner
●26ポイント

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

でやっているように、

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ