如何解决Checkmarx报告的存储XSS问题
本文关键字:报告 存储 XSS 问题 Checkmarx 何解决 解决 | 更新日期: 2023-09-27 18:17:24
我正在处理的代码库已经被Checkmarx分析过了,它返回了一个包含"存储XSS"问题的报告。问题说明:
方法GetHomepageFilterByLocale HomepageRepo.cs为Select元素从数据库获取数据。然后,该元素的值在代码中流动,没有经过适当的过滤或编码,并最终在方法GetProductsByFilterType homepageconcontroller .cs中显示给用户。这可能会导致存储跨站点脚本攻击。
有标准推荐的方法来解决这个问题吗?
请参阅下面的代码片段,以了解上述两种方法。
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);
}
您应该查看漏洞流(在查看漏洞时屏幕右侧),并查看该漏洞涉及哪些对象。
您也可以点击漏洞名称右侧的小问号('?')。它应该会告诉你如何解决这个问题。
最后,如果您仍然面临问题,您可以单击查询查看器并预览查询要查找的内容。
现在:根据我自己的经验,使用HttpUtility可以很容易地修复xss漏洞。HtmlEncode方法。
我想这样写:
HttpUtility.HtmlEncode (_context.HomepageFilter。SingleOrDefault(x => x. localeId == localeId));