Неправильная нейтрализация связанных со сценариями HTML-тегов на веб-странице (базовый XSS) (CWE ID 80) (1 недостаток) Исправление, требуемое политикой
Описание Этот вызов содержит недостаток межсайтового скриптинга (XSS). Приложение заполняет HTTP-ответ ненадежным вводом, позволяя злоумышленнику встроить вредоносный контент, такой как код Javascript, который будет выполняться в контексте браузера жертвы. Уязвимости XSS обычно используются для кражи или манипулирования файлами cookie, изменения представления контента и компрометации конфиденциальной информации, при этом новые векторы атак обнаруживаются на регулярной основе. Попытка исправить: 3 - Сложная ошибка реализации. Исправление ок. 51-500 строк кода.
Рекомендации Используйте контекстное экранирование для всех ненадежных данных, прежде чем использовать его для построения любой части ответа HTTP. Способ побега следует выбирать в зависимости от конкретного случая использования ненадежных данных, в противном случае он может не полностью защитить от атаки. Например, если данные записываются в тело HTML-страницы, используйте экранирование HTML-сущности;если данные записываются в атрибут, используйте экранирование атрибута;и т. д. Если веб-платформа предоставляет встроенную поддержку автоматического выхода из XSS, не отключайте ее. И библиотека OWASP Java Encoder для Java, и библиотека Microsoft AntiXSS предоставляют методы контекстного экранирования. Подробнее о контекстном экранировании см. https://www.owasp.org/index.php/XSS_%%28Cross_Site_Scripting%%29_Prevention_Cheat_Sheet.. Кроме того, рекомендуется всегда проверять ненадежные входные данные, чтобы убедиться, что они соответствуют ожидаемому формату, по возможности используя централизованные процедуры проверки данных.
SetupButton(data: ButtonGroup) {
$(data.ButtonId).click(function () {
window.pr.spinStart();
$(":button." + this.ButtonActiveClass)
.addClass(this.ButtonNonActiveClass)
.removeClass(this.ButtonActiveClass);
$(data.ButtonId).addClass(this.ButtonActiveClass)
$.get(data.Url, {}, function (response) {
var readResponse = response;
$('SelectedReport').attr('Report', data.ReportId);
$(this.DisplayId).html(readResponse);
data.Script();
window.pr.spinStop();
}.bind(this))
.fail(function (response) {
$(this.DisplayId).html(this.getErrorMessage());
window.pr.spinStop();
}.bind(this));;
}.bind(this));
}