HP fortify Audit Workbench 3.80 を使用して、アプリケーションの脆弱性を評価しています。Fortify は、次の ExtJs JavaScript コードを重大な (「最悪の」) DOM XSS 脆弱性としてマークします。
function doAjaxCall(param1, param2, div) {
var options = {
url : url,
params : {
param1 : param1,
param2 : param2
},
method: 'GET',
success: function(response, options) {
processResponse(response, div);
},
failure: function(response, options) {
doSomethingElse();
}
};
Ext.Ajax.request(options);
}
function processResponse(response, div) {
// SECURITY ISSUE HERE
document.getElementById(div).innerHTML = '<br>' +
'An error occurred with status code '
+ response.status +
'<br><br>';
}
response
AJAX リクエストから返されるレスポンスです。
Fortify 言います:
メソッド「processResponse」は、検証されていないデータを 100 行目で Web ブラウザーに送信します。これにより、ブラウザーが悪意のあるコードを実行する可能性があります。
問題とその理由を理解しています。私が知らないのは、ESAPIで入力をサニタイズする方法です。Java コードの問題には ESAPI を使用していますが、JavaScript でこの特定の問題を解決できるかどうかはわかりません。
この JavaScript ESAPI ライブラリ ESAPI4JS を見つけましたが、非常に高度なセキュリティ環境で作業しており、このライブラリにはまったくアクセスできません。
ESAPI を使用して応答をサニタイズするにはどうすればよいですか?
編集
ユーザー リクエストごとに完全な ajax リクエスト コードを追加しました。