Veracode жалуется на приведенный ниже код. Описание и рекомендации предоставляются. Может кто-нибудь qple - PullRequest
0 голосов
/ 04 октября 2019

Неправильная нейтрализация связанных со сценариями 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));
}
...