0571-88970062
 


ASP.NET中等安全级别


[来源:原创] [作者:admin] [日期:15-08-10] [热度:]

ASP.NET运行模式的权限说明图:

ASP.NET的默认运行模式是FULL TRUST 级别,在该级别下.NET程序拥有极高的权限执行程序或者代码。但是让程序运行在该模式下是十分危险的,黑客可以轻易地利用你的程序进行提权。国外空间,比如GoDaddy通常会把ASP.NET代码执行权限控制在中等安全模式。我司决定将ASP.NET的运行模式调为中等信任级别。
 
中等安全模式会有哪些影响?
 
以下是在ASP.NET中等安全模式下曾经遇到过的一些问题:

1. 基于VirtualPathProvider的模板机制不能用,因为VirtualPathProvider至少需要运行在High模式。

2. BuildProvider不能用,意味着你想自己添加自己的语言实现也不能用了,不过大部分项目不会用到这么高级的东西。

3. CodeDomEmit不能用了,这下惨了,什么IocAOP,动态注入的高科技玩意儿,全都废了,这些不是基于CodeDom的就是基于Emit的。

4. 通过aspx页面接管文件下载也不行了,Response写文件流到客户端需要更高的代码执行权限。

5. 大文件上传也别想了,因为大文件上传万变不离HttpWorkRequst,获取HttpWorkRequst的代码需要FullTrust模式。

6. SQLite不能用了,因为中等安全模式下没有非托管代码调用权限,所以除了SQLite外,涉及到非托管代码调用的,也都废掉了。

所以,如果要考虑允许让用户把程序部署到中等安全模式下,那就越早做中等安全模式的兼容性测试越好。

因为很多不能用的东西,都是涉及到基础结构的。
 
比如,文件下载不能通过Response写文件流的方式,你的程序正巧又是这么做防盗链,咋办?
答:用.htaccess做伪静态。
 
中等信任级别的主要限制:
 
不能调用非托管代码
不能调用服务组件
不能写事件日志
不能访问 Microsoft 消息队列
文件访问仅限于当前应用程序目录
注册表访问是不允许的
 
如果因为调整了安全级别导致您的网站出现访问异常的问题,请根据信任级别的限制调整您的程序。
以下是判断程序是否运行在中等安全模式的代码:

1
2
3
if (SecurityManager.IsGranted(new AspNetHostingPermission(AspNetHostingPermissionLevel.Medium)))
{
}

 
如果有遇到不是必须执行的逻辑,比如获取程序内存占用率或者大文件上传,那就可以先判断下,再决定是否调用。

 
友情链接:杭州网站建设化工设备网调节阀网高端网站网络推广域名注册企业邮局调节阀
Copyright @ 2015 杭州浩博网络