Мы используем HP fortify Audit Workbench 3.80 для оценки уязвимостей в наших приложениях. Укрепите маркирует следующий код ExtJs JavaScript в качестве критического («худшей») DOM XSS уязвимость:Как использовать ESAPI для разрешения 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, что может привести в браузере исполняющего вредоносный код.
Я понимаю вопрос и почему это проблема. Я не знаю, как дезинфицировать ввод с помощью ESAPI. Мы успешно используем ESAPI для проблем в нашем Java-коде, но я не уверен, что разрешу эту проблему в JavaScript.
Я нашел эту библиотеку JavaScript ESAPI, ESAPI4JS, но я работаю в чрезвычайно высокой среде безопасности, и у меня нет доступа к этой библиотеке вообще.
Как я могу использовать ESAPI для дезинфекции ответа?
EDIT
Добавлен полный Ajax код запроса по запросу пользователя.
@GeorgeStocker processResponse существует на стороне клиента. Это функция javascript, содержащая строку кода, включенную в вопрос. – Josh
@GeorgeStocker Это просто функция обертки для обратного вызова успеха AJAX. – Josh
Возможно, вы захотите включить это в код, чтобы дать более четкое представление о том, что мы видим. –