Итак, в основном у меня есть вызов ajax, который обращается к методу, который возвращает частичное представление, и для отображения данных я использую jQuery.html ().

Мы запускаем наш код через инструмент безопасности Veracode, и это вызывает уязвимость XSS.

Вот jquery:

 $.ajax({
            url: "ReturnTransNoInformation",
            data: { __RequestVerificationToken: ReturnAntiForgeryToken(), TransNo: $("[data-trans-no]").val() },
            type: "POST",
            beforeSend: function () {
                TransNoInfoAjaxBegin("[data-view-trans-no-container]");
            },
            success: function (data) {
                if (data.Success === false) {
                    if (data.ErrorMessage !== undefined && data.ErrorMessage !== null && data.ErrorMessage !== "") {
                        Error(data.ErrorMessage);
                    }
                    else {
                        Error("Something went wrong while loading the TransNo info, please refresh the page and try again.")
                    }
                    $("[data-transno-partial]").html(null); //Potential XSS
                }
                else {
                    $("[data-transno-partial]").html(data); //Potential XSS
                }
            },
            error: function () {
                Error("Something went wrong while loading the TransNo info, please refresh the page and try again.")
            },
            complete: function () {
                AjaxComplete("[data-view-trans-no-container]");
            }
        });

Мой код C #:

        [AuthorizeUsers(new UserLevel[] { UserLevel.SubRepMaster, UserLevel.Regional })]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> ReturnTransNoInformation(string transNo) {
            if (string.IsNullOrWhiteSpace(transNo)) return Json(new { Success = false, ErrorMessage = "Error: TransNo cannot be empty" });

            var info = await _iAccountingManager.ReturnTransNoInfoAsync(transNo, SessionInfo.CIDs);

            if (info == null) return Json(new { Success = false, ErrorMessage = "Error: TransNo does not exist" });

            return PartialView("~/Views/Accounting/Partials/_TransNoInfo.cshtml", new TransNoInfoViewModel(info));
        }

Мое частичное представление полностью контролируется мной без JS в частичном представлении. Это настоящая XSS-уязвимость?

0
Andrew 5 Май 2018 в 03:32

1 ответ

Лучший ответ

Если вы контролируете отображаемый код, то нет. XSS полагается на вредоносный код третьей стороны, вводящий на ваш сайт.

Если нет третьих лиц, которые могут изменить ввод на желаемый, то с XSS на вашем сайте проблем нет.

1
Cillian Collins 10 Май 2018 в 09:45