0

Ajax を使用して、Web サイトのコメントを投稿しています。

いいえ、ユーザーはテキストボックス内にいくつかのスクリプトを書くこともできます.

問題は、HTML でエンコードしたいことです (HTML タグの削除、スクリプトなど)

html要素を削除することを意味します。

今のところ、私は次のように失敗しました:

 var textData = $("'" +  $('#textBox').val() + "'").text();

しかし、これは私のばかげた試みです。動作することもありますが、特殊記号などで失敗する場合があります。

この点に関しては、どんな助けでも大歓迎です。

ありがとうございました。

編集:

ユーザーがコメントを投稿するたびに、コメントをサーバーに送信し、サーバー側でエンコードしてDBに保存し、クライアント側でもHTMLを更新します。エンコードされたメッセージをサーバーから取得したくない

4

3 に答える 3

3

他のみんなが言ったように、これをしないでください。サーバーで解決します。

ただし、送信されたものをHTMLエンコードする最短の方法(つまり、実際に印刷する方法<b>x</b>は次のとおりです。

var yourText = $('#textbox').val(); // or whatever
var yourTextHTML = $('<span></span>').text(yourText).html();
于 2012-06-14T10:39:32.390 に答える
0

これをクライアント側で行うべきではありません。攻撃者は、コメントを投稿し、 Fiddlerなどのデバッグ ツールを使用してリクエストを傍受し、それを変更して、禁止されている文字を含めることができます。これにより、XSS ed になります。

代わりにサーバーでこれを行うことを強くお勧めします。ドキュメントに書き込む前に、各コメントをhtmlentitiesPHP (または使用しているサーバー側スクリプト言語の同等の関数) に渡すだけで、すべての XSS試行が無駄になります。

于 2012-06-14T10:27:10.087 に答える
0

XSS 攻撃などを回避するのに役立つクライアント側ではなく、ブログ ページにコメントを表示するときにエンコードを行う必要があります。エンコーディングとは、html や script タグを削除することではなく、山かっこを文字エンティティ名として表すことです。

例のために。

you have written a nice article<script></script>

エンコード後

"you have written a nice article&lt;script&gt;&lt;/script&gt;"
于 2012-06-14T10:28:10.983 に答える