提问者:小点点

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


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

“动态确定对象属性的不当控制修改”

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

尝试用HTTP实现绑定属性到我的控制器函数,问题得到了解决。

那么在ASP.NETMVC是否强制对所有Post使用绑定属性以避免安全违规?

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

请分享你的观点。


共1个答案

匿名用户

不强制使用Bind属性。

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

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

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

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

注意实现存储库模式是一种常见的做法,以便在控制器和数据访问层之间创建一个抽象层。为了使这些教程保持简单并专注于教授如何使用实体框架本身,它们不使用存储库。有关如何实现存储库的信息,请参阅ASP.NET数据访问内容映射。

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

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