keyup()イベントを使用してフォームを作成しています。ユーザーが入力したすべての文字は、同じページの別のdivにすぐに表示されます。
XSSに対して脆弱です。jQueryを使用して保護するにはどうすればよいですか?
注:私のフォームでは、ラテン英数字のみ、およびコンマ、セミコロン、コロンを使用しています。
OWASPから「Reform」ツールを検索しましたが、もっと良い方法はありますか?
前もって感謝します。よろしく
keyup()イベントを使用してフォームを作成しています。ユーザーが入力したすべての文字は、同じページの別のdivにすぐに表示されます。
XSSに対して脆弱です。jQueryを使用して保護するにはどうすればよいですか?
注:私のフォームでは、ラテン英数字のみ、およびコンマ、セミコロン、コロンを使用しています。
OWASPから「Reform」ツールを検索しましたが、もっと良い方法はありますか?
前もって感謝します。よろしく
いくつかの詳細が利用可能です。すべてに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>';
}));
含まれているxssクリーナーはnode-validator
包括的であることがわかりました。興味のあるコードはこちらから入手できます。ブラウザで使用するには、少しクリーンアップする必要があります(module.exportsを削除し、代わりにJavascriptクロージャでラップします)が、かなりシームレスに機能するはずです。必要に応じて、JQueryプラグインに直接組み込むこともできます。