我在使用HPFortify时遇到另外2个错误,以及以下给定代码的主要问题:
1. ASP.NET MVC不良做法:未经防伪验证的控制器操作[注:由于Bind属性,它可能会询问此错误。因此,我将ValidateAntiForgeryToken放入代码中。但是,它再次要求将动词更改为POST]
2. ASP.NET MVC不良做法:控制器操作不限于POST
是正确的还是需要进行更改?
[AcceptVerbs(HttpVerbs.Get)]
[ValidateAntiForgeryToken]
public Actionresult Index([Bind(Include="Eid, Eage")]EmpModel objEmpModel)
{
return view(objEmpModel);
}
答案 0 :(得分:0)
您可以简单地使用[HttpPost]
来处理像这样的复杂对象:
[HttpPost]
[ValidateAntiForgeryToken]
public Actionresult Index(EmpModel objEmpModel)
{
return view(objEmpModel);
}
或者,如果您想让代码正常工作,请使用以下代码:
[HttpGet]
[ValidateAntiForgeryToken]
public Actionresult Index([FromUri]EmpModel objEmpModel)
{
return view(objEmpModel);
}
注意:对于类之类的复杂类型,由于您使用的是[HttpGet]
方法,因此web-api会尝试从主体读取数据,因此[FromUri]
属性会覆盖默认值约定并从Uri而不是body读取数据。更多信息-https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api