从ASP.NET框架功能限制C#代码

时间:2012-05-09 23:06:44

标签: c# asp.net asp.net-mvc-3 security

是否可以限制某些.NET功能/类的代码访问?

例如,我有我的MVC CMS的插件模块。我不希望第三方模块能够直接使用File类。我想将它包装在API中,以便模块只能访问其自己指定的“root”文件中的文件。文件夹(沙箱)。否则,该模块将具有对整个服务器的文件访问权限,包括CMS系统文件。

有没有办法限制某些命名空间使用框架的特定功能?或者我应该采取不同的方法吗?

为您提供概述:

CMS名称空间为MyCms

所有模块都使用命名空间MyCms.Module.xxxxx

模块只是标准的MVC结构,它们被带入名称主MVC命名空间,并且路由被自动设置为将请求路由到模块控制器。

因此,模块可以默认访问ASP.NET框架。我希望能够限制MyCms.Module.xxxxx名称空间能够做某些事情,如果可能的话。

我在这里采取了错误的做法吗?我并不热衷于改变基础设施,但如果我无法从顽皮的模块中妥善保护主CMS基础设施,我可能会被迫使用。

2 个答案:

答案 0 :(得分:0)

你要给你的第三方源代码还是只编译一个API dll? 如果是以后,那么设置一个界面,只展示你希望第三方使用的方法,听起来像是对我的回答。 当然,它也很大程度上依赖于代码库的架构师。

或者只是为您的第三方提供指定的文件也可以做到这一点

答案 1 :(得分:0)

是的,.net /公共语言运行库支持一组广泛的权限限制和自定义,您可以放入哪些代码可以执行哪些操作。

This概述了.net 4之前的工作原理

http://msdn.microsoft.com/en-us/library/.aspx

This现在是如何运作的

这个东西有点复杂,我的工作仅限于将其中的一部分用于我必须编写的测试用例,但它的编写是为了提供您所寻求的功能。