2012-08-13 56 views
1

我的ASP.NET MVC应用程序包含许多可由最终用户编辑的View文件(它们存储在数据库中并通过VirtualPathProvider加载) 。基于每个视图的ASP.NET MVC的代码访问安全性

我想允许我的用户编辑他们的视图文件,但是我对安全隐患很谨慎。

有什么办法可以强制执行某种代码访问安全性,以确保视图中的任何代码不能执行任何危险的任务(即最小信任,它只能通过传入的存储库对象访问数据库并呈现它自己。没有文件系统访问,没有调试它的主机进程等)。

我可以限制视图派生自的超类(通过让我的VirtualPathProvider提供标头<%@ Page指令,而仅从数据库返回呈现函数体),所以我可以通过将属性应用于此超类来强制CAS,还是更加牵涉其中,这不是一件容易的事情?

回答

1

MVC在homogeneous AppDomain中运行,这意味着框架中的所有代码都使用相同的权限集运行。因此,无法降低给定视图的CAS权限。 (你不会真的想这样做,无论如何,因为它可能会妨碍MVC框架的正常工作。)

唯一可行的解​​决办法 - 虽然很不幸,这是工作的一个很大 - 是定义你自己的看法格式它不能被用来做任何危险的事情,然后有一个自定义的视图引擎,知道如何提供该类型的视图。这使您能够定义“危险”,无论您想要如何阻止服务器端代码执行,甚至尝试阻止Javascript执行(这在自己的仪式中都是一项相当困难的任务)。

相关问题