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

如何通过checkmarx分析工具禁用代码中存储的跨站点脚本?

夹谷斌蔚
2023-03-14

我从检查玛克斯那里得到了以下安全漏洞。

酒精跟踪器网络应用程序/酒精跟踪器网络应用程序/控制器/家庭控制器.cs从数据库中获取 ToList 元素的数据。然后,此元素的值在未经正确过滤或编码的情况经代码,并最终在方法 SubmitEventReque 请求中显示在酒精跟踪器网络应用/酒精跟踪器WebApp/控制器/家庭控制器.cs的第 20 行中。这可能会使存储的跨站点脚本攻击成为可能。

public ActionResult SubmitEventRequest()
{
    AlcoholTrackerContext db = new AlcoholTrackerContext();
    string winlogin = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
             
    var intname = winlogin.Substring(winlogin.LastIndexOf('\\') + 1);
    ViewBag.IDSID = intname;
    var name = db.WorkerInfoes.FirstOrDefault(a => a.IDSID.Equals(intname));
    ViewBag.name = name.FirstName + " " + name.LastName;
    ViewBag.WWID = name.OrgUnitDescr;
    ViewBag.ConsumptionMethod = db.AlcoholConsumptions;
    ViewBag.ConsumptionMethod = new SelectList(db.AlcoholConsumptions, "AlcoholConsumptionId", "ConsumptionMethod");
             
    return View(new Event());
}

如果我在下面使用

ViewBag.ConsumptionMethod =
    new SelectList(HttpUtility.HtmlEncode(db.AlcoholConsumptions), "AlcoholConsumptionId", "ConsumptionMethod");

但是通过上述修复,我在Razor视图中为下拉列表收到错误:

@Html.DropDownListFor(model => model.AlcoholConsumptionId,
    ViewBag.ConsumptionMethod as IEnumerable<SelectListItem>,
    "---Please Select---",
    new {
            id = "AlcoholConsumptionMethod",
            @class = "form-control-new",
            style = "margin-left:-788px;margin-top:20px;width:20.5%"
        }
)

视图中出错:数据绑定:“系统。“Char”不包含名为“AlcoholConsumptionId”的属性。

共有1个答案

乌甫
2023-03-14

< code>db。AlcoholConsumptions的类型为< code>IEnumerable,对< code>IEnumerable进行HTML编码不会产生您期望的结果,也不会返回SelectList接受的< code>IEnumerable

不过,使用Razor视图会自动编码数据(除非您使用Html.Raw),因此您可以删除HttpUtility.HtmlEncode,但Checkmarx会看到您没有显式调用,因此您可以取回XSS。

在将< code > alcohol consumption id 添加到< code>db之前,HTML对其进行编码。酒精消耗量。

 类似资料:
  • 问题内容: 我正在尝试使用一个数据库中存在但另一个数据库中没有的information_schema.routines查询存储过程定义的列表。 这给了我一行查询的定义,所以当我有这样的评论时 SQL被注释掉了,我不能使用该定义来创建SP。 如何使用适当的换行符将其解析回去? 还是 有更好的方法(使用代码)来获取这些脚本? 问题答案: 存储过程仅在Management Studio中显示在一行上。如

  • Summary Stored Cross-site Scripting (XSS) is the most dangerous type of Cross Site Scripting. Web applications that allow users to store data are potentially exposed to this type of attack. This chapt

  • 问题内容: 是否可以在CSS样式表中使用跨站点脚本?例如,参考样式表包含恶意代码,您将如何处理?我知道您可以使用样式标签,但是样式表呢? 问题答案: 来自浏览器安全手册 JavaScript执行的风险。作为一个鲜为人知的功能,某些CSS实现允许将JavaScript代码嵌入样式表中。至少有三种方法可以实现此目标:使用expression(…)指令,该指令可以评估任意JavaScript语句并将其值

  • 我希望有一个函数,它从一个单元格中获取一个值,并在另一个工作表中的过滤器中使用它来仅过滤该值。我该怎么做? 提前谢谢你。

  • 只要应用程序获取不受信任的数据并将其发送到客户端(浏览器)而未经验证,就会发生跨站点脚本(XSS)。这允许攻击者在受害者的浏览器中执行恶意脚本,这可能导致用户会话劫持,破坏网站或将用户重定向到恶意站点。 下面我们借助一个简单图表了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 内部/外部用户或管理员发送给系统的不受信任的数据。 攻击者的方法 - 发送不受信任的数据/基

  • 我想知道是否有一个工具,它将我的代码库和一个jar文件作为输入,它将在代码库中搜索这个jar文件正在使用的任何地方,并给我输出。不应使用Eclispe IDE。(变得微不足道)。我已经搜索了一些静态代码分析工具,如PMD、Checkstyle、findbugs。但他们都没有我需要的选择。你能给我推荐一个能完成上述任务的工具吗?