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说:
Method“ ProcessResponse”将未验证的数据发送到第100行的Web浏览器,这可能导致浏览器执行恶意代码。
对输入进行消毒。 我们正在成功地将ESAPI用于Java代码中的问题,但我不确定在JavaScript中解决此特定问题。 我确实找到了这个JavaScript Esapi库,我了解问题以及为什么是一个问题。 我不知道的是如何用
esapi
SAPI4JS,但是我在一个极高的安全环境中工作,我无法访问此库。 我如何使用esapi对响应进行消毒?
检查snyk的示例:
var ESAPI = require('node-esapi');
document.body.style.color =
'url(<%=ESAPI.encoder().encodeForJS(ESAPI.encoder().encodeForURL(color))%>)';
document.write("Site is at: " + document.location + ".");
您需要在使用之前将其初始化。 OWASP网站上有文档。@georgestocker是错误的。基于DOM的XS通常是最危险的,因为它无法处理服务器端。一个完美的示例是上述,可以通过在某些代码之前使用#来轻松利用它。