0

keyup()イベントを使用してフォームを作成しています。ユーザーが入力したすべての文字は、同じページの別のdivにすぐに表示されます。

XSSに対して脆弱です。jQueryを使用して保護するにはどうすればよいですか?

注:私のフォームでは、ラテン英数字のみ、およびコンマ、セミコロン、コロンを使用しています。

OWASPから「Reform」ツールを検索しましたが、もっと良い方法はありますか?

前もって感謝します。よろしく

4

2 に答える 2

3

いくつかの詳細が利用可能です。すべてにjQueryのHTML「解析」を使用する必要はないことを忘れないでください。を使用する代わりに.html()、DOM操作とを使用します.text()(これも通常は高速です)。たとえば、これは次のとおりです。

$('#result').html('<span class="whatever">' + someInput + '</span>');

これになります:

$('#result').text($('<span>').addClass('whatever').text(someInput));

それが不可能な場合は、で設定し.text()てからでフェッチすることにより、完璧なHTMLエスケープを行うこともできます.html()。たとえば、これは次のとおりです。

var data = 'This text: **is bold**';

$('#result').html(data.replace(/\*\*(.+?)\*\*/g, '<b>$1</b>'));

これになります:

var data = 'This text: **is bold**';

$('#result').html(data.replace(/\*\*(.+?)\*\*/g, function(x) {
    return '<b>' + $('<div>').text(x).html() + '</b>';
}));
于 2012-04-13T03:53:39.873 に答える
1

含まれているxssクリーナーはnode-validator包括的であることがわかりました。興味のあるコードはこちらから入手できます。ブラウザで使用するには、少しクリーンアップする必要があります(module.exportsを削除し、代わりにJavascriptクロージャでラップします)が、かなりシームレスに機能するはずです。必要に応じて、JQueryプラグインに直接組み込むこともできます。

于 2012-04-13T03:55:22.247 に答える