2016-08-18 154 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 =「」)]排除參數