2016-08-18 155 views
2

HP强化扫描为我提供了一条消息,内容为重量分配:对我控制器中大多数操作方法的不安全粘合剂配置(API滥用,结构)。以下是操作方法的示例。HP Fortify - Mass assignment

<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的不良做法。 请建议一种方法来解决这个问题。

回答

0

在C#中,你可以指定在模型项目将被允许。例如,你的日常看起来像在C#:

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

 
\t return RedirectToAction("Edit", "[Controller]"); 
 
}

这至少应该给你是一个跳跃点,研究你正在写的语言是否允许采取相同的行动。

除了能够包含特定参数(白名单),您还可以简单地通过使用[Bind(Exclude =“”)]排除参数