【问题标题】:Code Access Security on a per-view ASP.NET MVC basis基于每个视图 ASP.NET MVC 的代码访问安全性
【发布时间】:2012-08-13 23:55:30
【问题描述】:

我的 ASP.NET MVC 应用程序包含许多可由最终用户编辑的 View 文件(它们存储在数据库中并通过 VirtualPathProvider 加载)。

我希望允许我的用户编辑他们的视图文件,但我担心安全隐患。

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

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

【问题讨论】:

    标签: asp.net-mvc code-access-security


    【解决方案1】:

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

    唯一可行的解​​决方案 - 尽管不幸的是,这是一项大量工作 - 是定义您自己的视图格式,它根本不能用于做任何危险的事情,然后有一个自定义视图引擎知道如何提供视图那种。这使您能够根据需要定义“危险”,从阻止服务器端代码执行到甚至试图阻止 Javascript 执行(这在其自身的仪式中是一项相当困难的任务)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2012-10-07
      相关资源
      最近更新 更多