知识大全 分享关于ASP.NET中等安全模式的一些经验

Posted

篇首语:智慧并不产生于学历,而是来自对于知识的终生不懈的追求。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 分享关于ASP.NET中等安全模式的一些经验相关的知识,希望对你有一定的参考价值。

分享关于ASP.NET中等安全模式的一些经验  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  如果你正在开发一个通用型的Web产品 比如BBS CMS BLOG这类的 那么 建议你阅读以下本篇文章

  非通用型的Web程序或产品 通常不会和ASP NET中等安全模式打交道 因为面对的用户群体会比较固定 或者部署环境是可以由程序提供者决定的

  但在做通用型的Web产品的时候 你就要和各种人打交道了 有的站长用的是国外空间 比如GoDaddy 外国的空间商通常会把ASP NET代码执行权限控制在中等安全模式

  而在中等安全模式下 很多我们习以为常的事情都是做不了的

  中等安全模式是什么?

  可能很多人都没接触过中等安全模式 我在参与bbsmax项目之前 我也不知道有中等安全模式这么个东西

  简单来说 ASP NET提供了一个简单设置代码执行权限的方案 叫做 信任级别

  它默认提供 种信任级别 分别是 FullTrust High Medium Low Minimal

  每个信任级别的设置 分别对应于一组代码权限设置

  这个方案 让网站部署者可以通过nfig快速设置网站的托管代码执行权限

  通过对nfig的<system web>/<trust>节点的level属性值进行设置 就可以将ASP NET程序设置到不同的信任级别

  ASP NET安装完 所有网站默认都是FullTrust信任级别 也是最高信任级别

  本文说的 中等安全模式 就是对应于Medium信任级别

  因为托管代码执行权限模型不是本文讨论的重点 所以我这里只做简单的说明 不深入讨论ASP NET安全级别设置的实现原理 实现原理可以参考本文最后给出的几个连接

  中等安全模式会有哪些影响?

  以下是我和我的同事在ASP NET中等安全模式下曾经遇到过的一些问题

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

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

   CodeDom Emit不能用了 这下惨了 什么Ioc AOP 动态注入的高科技玩意儿 全都废了 这些不是基于CodeDom的就是基于Emit的

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

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

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

   Access数据不能用OleDb连接了 因为中等安全模式下 OleDbClient是不能用的 你只能用ODBC数据源

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

  因为很多不能用的东西 都是涉及到基础结构的

  比如 SQLite和Access不能用 你的程序如果正巧就只做这两个数据库的版本 咋办?

  比如 文件下载不能通过Response写文件流的方式 你的程序正巧又是这么做防盗链 咋办?

  中等安全模式要求那么苛刻 怎么对付?

  只能绕道走了 要不然怎么办?方法还是有的 得不断尝试

  VirtualPathProvider不能用 BuildProvider也不能用 但是又需要有自己的一套模板语法 那只好在页面访问前生成aspx页面 再做URL重写了

  说起来很简单 就一句话 但是这中间我不知道写了多少代码 做了多少次试验 才找到最佳方案

  所以 你的方法还是得你自己找

  以下是判断程序是否运行在中等安全模式的代码

  if (SecurityManager IsGranted(new AspNetHostingPermission(AspNetHostingPermissionLevel Medium)))

  

  

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

cha138/Article/program/net/201311/11948

相关参考

知识大全 一印度学生Asp.net源码分享讨论

一印度学生Asp.net源码分享讨论  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 ASP.NET会话(Session)模式

ASP.NET会话(Session)模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP.NET中的session存储模式运用

ASP.NET中的session存储模式运用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在中

知识大全 ASP.NET企业服务总线实现模式

ASP.NET企业服务总线实现模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!ESB在企业体系结

知识大全 开发设计模式——asp.net中实现观察者模式

   在中实现观察者模式?难道中的观察者模式有什么特别么?嗯基于Http协议的Application难免有些健忘我是这样实现的不知道有没有更好的办法?  先谈谈需求吧以免

知识大全 ASP.NET谈三层结构与MVC模式的区别

ASP.NET谈三层结构与MVC模式的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在CS

知识大全 浅谈ASP.NET开发下的MVC设计模式的实现

浅谈ASP.NET开发下的MVC设计模式的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 分享一下ExpressQuantumGrid4的cxGrid的一些使用方法和经验

分享一下ExpressQuantumGrid4的cxGrid的一些使用方法和经验  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容

知识大全 关于ASP.NET中的负载均衡

关于ASP.NET中的负载均衡  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET站点中

知识大全 关于ASP.Net中的时间处理

关于ASP.Net中的时间处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在ASPNet中M$为