HP fortify扫描给我一条消息,即质量分配:对于 Controller 中的大多数操作方法,不安全的活页夹配置(API滥用,结构性)。以下是操作方法的示例。
<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的坏习惯。
请提出解决此问题的方法。
最佳答案
在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 =“”)]来排除参数
关于fortify - HP Fortify-批量分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39015040/