【问题标题】:How to solve Stored XSS issue reported by Checkmarx如何解决 Checkmarx 报告的存储型 XSS 问题
【发布时间】:2016-11-11 16:39:25
【问题描述】:

Checkmarx 对我正在处理的代码库进行了分析,并返回了一份包含“Stored XSS”问题的报告。该问题指出:

方法 GetHomepageFilterByLocale HomepageRepo.cs 从数据库中获取 Select 元素的数据。然后,该元素的值在没有经过适当过滤或编码的情况下流经代码,并最终在 GetProductsByFilterType HomepageController.cs 方法中显示给用户。这可能会启用存储跨站点脚本攻击。

是否有解决此问题的标准推荐方法?

请参阅下面的代码 sn-ps 了解上述两种方法。

HomepageRepo.cs

public HomepageFilter GetHomepageFilterByLocale(int localeId)
    {
        return _context.HomepageFilter.SingleOrDefault(x => x.LocaleId == localeId);
    }

HomepageController.cs

GetHomepageViewModel() 方法是调用存储库方法的地方。

[HttpGet]
    public ActionResult GetProductsByFilterType(int locale, string filterType)
    {
        HomepageViewModel model = GetHomepageViewModel(locale, filterType);

        if (model?.Products != null)
        {
            model.Products.ForEach(p => p.Name = HttpUtility.HtmlEncode(p.Name));
            model.Products.ForEach(p => p.ImageUrl = HttpUtility.HtmlAttributeEncode(p.ImageUrl));
        }

        return Json(model, JsonRequestBehavior.AllowGet);
    }

【问题讨论】:

    标签: c# xss checkmarx


    【解决方案1】:

    您应该查看漏洞流(查看漏洞时在屏幕右侧)并查看此漏洞涉及哪些对象。

    您也可以点击漏洞名称右侧的小问号('?')。它应该告诉你如何解决它。

    最后,如果您仍然遇到问题,您可以单击查询查看器并预览查询的确切内容。

    现在:根据我自己的经验,使用 HttpUtility.HtmlEncode 方法可以轻松修复 xss 漏洞。

    我在想这样的事情:

    HttpUtility.HtmlEncode(_context.HomepageFilter.SingleOrDefault(x => x.LocaleId == localeId));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-22
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 2020-01-08
      相关资源
      最近更新 更多