我们正在使用 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 请求返回的响应。
强化 说:
方法“processResponse”在第 100 行将未经验证的数据发送到 Web 浏览器,这可能导致浏览器执行恶意代码。
我理解这个问题以及为什么它是一个问题。我不知道如何使用ESAPI清理输入。我们成功地使用 ESAPI 来解决我们 Java 代码中的问题,但我不确定在 JavaScript 中解决这个特定问题。
我确实找到了这个 JavaScript ESAPI 库ESAPI4JS,但是我在一个安全性极高的环境中工作,而且我无法访问这个库。
如何使用 ESAPI 清理响应?
编辑
为每个用户请求添加了完整的 ajax 请求代码。