私のコードでcheckmarxをスキャンした後、以下のメッセージが表示されます。JavaScriptのクライアントDOM XSSの脆弱性を防ぐには?
... \ action \ searchFun.jsの23行目で実行するメソッドは、フォーム要素のユーザー入力を取得します。
この要素の値は、適切にサニタイズまたは検証されずにコードを通過し、最終的に../action/searchFun.jsの28行目の関数でユーザーに表示されます。これにより、DOM XSS攻撃が可能になる場合があります。
Checkmarxを満足させるために上記のシナリオをどのようにサニタイズすることができますか? スクリプトは次のように:
function searchAnnouncements(){
$('#loadingAnnouncements').html('Loading...');
var formData = $('form').serialize();
jQuery.ajax({
type: "post",
url: "bat.ajax",
data: formData,
cache: false,
dataType: "json",
cache: false,
success: function(json) {
$('div.block').unblock();
$('#loadingAnnouncements').html('');
if (json.resultSize > 0)
$('#searchResults').html(json.searchResult);
});
},
}
これは、html行について不平を言うのですか?幸いなことに...もしあなたがサーバーからhtmlを返して表示しているのであれば問題になるかもしれません。それを避ける唯一の方法は、HTMLを送信してJSONを解析してDOMを構築することではありません。または、XSSリムーバースクリプトを見つけることができますが、それは物事を逃すことができます。または、警告を無視してコーヒーをお楽しみください。 – epascarello