Мы используем HP fortify Audit Workbench 3.80 для оценки уязвимостей в наших приложениях. Fortify помечает следующий код JavaScript ExtJ как критическую («наихудшую») XSS-уязвимость DOM:
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, что может привести к выполнению браузером вредоносного кода.
Я понимаю проблему и почему это проблема. Чего я не знаю, так это как очистить ввод с помощью ESAPI. Мы успешно используем ESAPI для решения проблем в нашем коде Java, но я не уверен, что смогу решить эту конкретную проблему в JavaScript.
Я нашел эту библиотеку JavaScript ESAPI, ESAPI4JS, но я работаю в среде с чрезвычайно высоким уровнем безопасности. , и у меня вообще нет доступа к этой библиотеке.
Как я могу использовать ESAPI для очистки ответа?
ИЗМЕНИТЬ
Добавлен полный код запроса ajax для каждого запроса пользователя.