代码访问安全每个视图ASP.NET MVC的基础上(Code Access Security on

2019-07-30 23:42发布

我的ASP.NET MVC应用程序包括许多是由最终用户(他们存储在数据库中,并通过加载的VirtualPathProvider)编辑查看文件。

我想,让我的用户编辑自己的视图文件,但是我很警惕的安全隐患。

有没有什么办法可以强制执行某种代码访问安全的确保,在视图中的任何代码不能执行任何危险的任务(即最低限度的信任,它只能通过传入的库对象访问数据库和渲染本身。没有文件系统访问,无需调试它的主机进程等)。

我可以限制该视图从导出(由具有我的VirtualPathProvider提供报头中的超类<%@ Page的指令,而只渲染功能体从数据库返回),所以可通过将属性应用于此超执行CAS,或它说的是更多地参与,这是不容易的任务?

Answer 1:

MVC运行在一个均匀的AppDomain ,这意味着在框架中的所有代码相同的权限集运行。 因此,没有办法来降低给定视图的CAS权限。 (你不会真的无论如何要做到这一点,因为这将防止MVC框架无法正常工作。)

唯一可行的解​​决方案 - 但不幸的是,这是工作的一个很大 - 是定义一个根本不能用来做什么危险你自己的看法格式,然后必须知道如何服务的意见该类型的自定义视图引擎。 这使您能够界定“危险”不过你想要的,阻塞服务器端代码执行,甚至试图阻止JavaScript执行(这是它自己的仪式相当艰巨的任务)的能力。



文章来源: Code Access Security on a per-view ASP.NET MVC basis