【问题标题】:HP Fortify - Mass assignmentHP Fortify - 批量分配
【发布时间】:2016-08-18 09:49:58
【问题描述】:

HP fortify 扫描给我一个消息,即 Mass Assignment: Insecure Binder Configuration (API Abuse, Structural),用于我的控制器中的大多数操作方法。下面是action方法的例子。

<HttpPost>
Function Edit(model as GridViewModel)
Dim manager as new Managers
manager.Edit(model.id, model.name, model.desc,model.class)
Return Nothing
End Function

当我尝试以下方法时,错误消失了。

<HttpPost>
Function Edit(id as integer?,name as string, desc as string, class as string)
Dim manager as new Managers
manager.Edit(id, name, desc,class)
Return Nothing
End Function

但上面的代码似乎是 MVC 的不良做法。 请提出解决此问题的方法。

【问题讨论】:

    标签: fortify mass-assignment


    【解决方案1】:

    在 C# 中,您可以指定模型中的哪些项目将被允许进入。例如,您的例程在 c# 中将如下所示:

    [HttpPost]
    public ActionResult Edit([Bind(Include = "id,name,desc,class")] GridviewModel model)
    {
    	Managers manager = new Managers();
    	manager.Edit(model.id, model.name, model.desc, model.class);
    
    	return RedirectToAction("Edit", "[Controller]");
    }

    这至少应该给你一个跳跃点来研究你正在编写的语言,看看它们是否允许相同的操作。

    除了能够包含特定参数(白名单)之外,您还可以简单地使用 [Bind(Exclude = "")] 来排除参数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      相关资源
      最近更新 更多