在控制结果时使用jQuery.html()是一个漏洞

时间:2018-05-05 00:32:35

标签: c# jquery xss

所以基本上我有一个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漏洞吗?

1 个答案:

答案 0 :(得分:1)

如果您在显示的代码的控制之下,那么没有。 XSS依赖恶意第三方将代码输入您的网站。

如果没有第三方可以将输入更改为所需的输入,那么您网站上的XSS就没有问题。