MVC安全违规-对动态确定的对象属性的修改控制不当



我们正在开发MVC 5应用程序,当我们使用Veracode运行安全扫描时,我们得到了以下缺陷,称

"不正确控制修改动态确定的对象属性"

并添加了链接作为修复的参考。

尝试使用HTTPPost将绑定属性实现到我的控制器函数,问题已解决。

因此,在ASP.NET MVC中,是否必须对所有Post使用绑定属性以避免安全冲突?

或者我可以忽略这个缺陷吗?或者我可以用任何其他方法来解决这个问题,因为在实时应用程序中,硬编码和维护绑定属性确实很困难。

请分享你的观点。

不强制使用Bind属性。

你发布的链接基本上是他们能想到的最肮脏的例子。他们将EF模型直接绑定到控制器中,这是任何现实世界的应用程序都不会做到的,我讨厌Miscrosoft,在那里,他们向你展示了通过应用最肮脏的最糟糕的实践模式,你可以多么容易地从DB到Web,而不解释这不是你在现实生活中想要做的事情。

在现实生活中,你会创建一个(视图)模型,它是根据你的视图量身定制的。这意味着类将只具有您想从请求中接受的属性,因此在大多数情况下您并不真正需要Bind属性。

EF模型是数据层中的低级别类,不应绑定到任何控制器IMO.

更新:事实上,在链接的顶部,他们已经发布了这个:

注意:在中实现存储库模式是一种常见的做法以便在控制器和数据访问层。保持这些教程的简单性和重点教授如何使用实体框架本身,他们不使用存储库。有关如何实现存储库的信息,请参阅ASP.NET数据访问内容映射。

然而,这只是在谈论存储库模式,这是一个很好的抽象数据层的模式,但存储库模式将返回的DTO仍然太低,无法绑定到视图。

您应该创建一个适合您的视图的模型,并且在控制器或服务层中,您可以在不同层之间进行基础设施映射。

最新更新