当前位置: 首页 > 知识库问答 >
问题:

ASP.Net MVC应用存储了Checkmarx报告的XSS漏洞

薄伟彦
2023-03-14

Checkmarx对代码进行了分析,并报告了以下问题:

第**行的方法Load_Bank从数据库中获取Where元素的数据。然后,该元素的值在未经正确过滤或编码的情况下流经代码,并最终在SomeController.cs的第*行的方法中显示给用户。这可能会启用存储的跨站点脚本攻击。

internal IEnumerable<BankDTO> Load_Bank()
{
    using (var Container = new EBookletEntities())
    {
        var query = from r in Container.Gen_Bank.AsNoTracking()
                    where r.IsDeleted != true
                    select new Gen_BankDTO
                    {
                        Id = r.Id,
                        Name = r.Name
                    };
        return query.ToList<BankDTO>();
    }
}

以下是控制器代码

using (var bll = new BankBLL())
{
    var item = bll.Load_Bank();
    var model = item.Select(r => new BVM()
        {
            Id = r.Id,
            Name = HttpUtility.HtmlEncode(r.Name)
        }).ToList();

    return Json(model.ToDataSourceResult(request), "application/json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);

}

Checkmarx源:

where r.IsDeleted != true 

目的地:

return Json(model.ToDataSourceResult(request), "application/json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);

我想知道是否真的存在存储的XSS问题或检查玛克斯报告它是错误的?

如何解决Checkmarx问题?

共有1个答案

宗政英才
2023-03-14

这是不可利用的,因为响应类型是应用程序/json。即使存在带有脚本标记的有效 xss 攻击,也没有现代浏览器会在具有应用程序/json 内容类型的响应中执行该攻击。

另外,Id我猜是一个数字或uuid,Name是html编码的,你可以说这是为了深度防御,但它实际上只需要编码为json,这是固有的。

您可以在检查中的标记将其标记为不可利用。

还要注意,在GET请求中返回json数组仍然不被认为是好的做法,因为有一种叫做json劫持的老攻击。然而,这在现代浏览器中已经不能被利用了,所以我不会说它容易受到攻击,除了在IE9中,不幸的是IE9可能仍然在使用。

 类似资料:
  • 我正在处理的代码库已被Checkmarx分析,它返回了一个包含“存储的XSS”问题的报告。该问题指出: 方法GetHomepageFilterByLocaleHomepageRepo.cs从数据库中获取Select元素的数据。然后,此元素的值在没有经过适当过滤或编码的情况下流过代码,并最终在方法GetProductsByFilterType中显示给用户HomepageController.cs.这

  • Checkmarx在我的Controller类中为以下方法提供了XSS漏洞。具体来说:此元素的值(ResultsVO)随后在代码中流动,而没有经过适当的清理或验证,最终在方法中显示给用户: ResultsVO对象有很多String属性,我只是想知道是否有一种优雅的方法来编码它们以防止此漏洞。

  • Checkmarx扫描仪扫描“反射XSS所有客户端”。如何在JavaRESTAPI中解决这个问题? 本地运行了REST API服务的扫描。

  • This document outlines security procedures and general policies for the Libra project. Note: As Libra Core is currently in the prototype stage and does not power a blockchain with a currency that has

  • 我的Android应用项目使用检查玛克斯扫描源代码以查找安全问题。检查马克思报告了谷歌排球图书馆的问题。以下是错误说明: 方法performRequest位于\ app \ libraries \ valley \ src \ main \ Java \ com \ Android \ valley \ toolbox \ hurl stack . Java的第89行,用于获取getHeaders

  • 我有3种类型的文件(XML、PDF、zip)存储在我的服务器文件中,并根据请求以base64格式发送给用户(客户端)(当客户端单击一个按钮时)。< br >文件被下载到用户的计算机上,并且不显示(在HTML页面上)。 我使用Checkmarx服务进行了安全测试,收到了安全问题: “MyFile.js第58行的方法函数从数据库中为readFileSync元素获取数据。然后,该元素的值在未经正确筛选或