原文:http://www.blogcn.com/user8/flier_lu/index.html?id=3024613
内存映射文件与用户权限 【程序编程相关:往SQL中导入数据,提示说要备份事务日志】
上周 hbifts 在折腾他的文件映射封装类的时候,碰到了不能在 asp.net 中直接打开由桌面程序创建的内核对象的问题. 【推荐阅读:往SQL中导入数据,提示说要备份事务日志】
hbifts 在接受了改进意见后,采用了另外一种危害较小但也是不应推荐的方式,通过建立 null dacl 方式解决问题. 【扩展信息:Java中的随机数应用】
他当时是的方法是修改 asp.net 配置文件,让 asp.net 扮演系统管理员帐号运行来访问对象.我在水木上回帖说这是非常不好的编程习惯,因为这样一来会是的 asp.net 页面运行在失控的安全上下文中.一旦有恶意代码攻击此页面,将具有系统管理员权限,这是非常危险的.而 iis 5/6 之所以要提出各种隔离模型,正式为了减少以前 iis 4/5 缺省模型下类似的问题,将页面被攻击后的损失降到最低.
创建一个everyone security_attributes
这种方式可以说已经非常接近正确解决方法了,呵呵,虽然也有一定的安全隐患,但比前一种来说已经有个质的突破.
我当时曾答应写一篇文章介绍一下解决办法,可惜因为工作与其他一些原因最近一直很忙,拖到现在 :p
而从 hbifts 摸索的过程,以及很多朋友的回帖来看,对 dacl 以及相关的权限控制很多人都非常陌生.下面就简要地介绍一下这方面的基础性知识与一些基本概念,让大家在用的时候,能够知其然也知其所以然 :p话说开天辟地之初,nt loader 载入内核,系统开始启动各种系统进程.各个进程在此时大都由系统支配,说同一种语言,彼此之间也没什么隔阂.可坏就怀在 winlogon 此进程不老实,非要提供登陆界面让外人登陆到系统,进而衍生出 explorer, cstrike 等七七八八的进程,说不同的语言干不同的事,对文件网络等资源胡乱访问.nt 系统岂是象 9x 之辈那么好欺负的:“想在我地盘上混,就先报上名来,能干什么不能干什么也得由我说了算,威胁的事情还得打个报告留个底先”.
于是用户登陆系统之时必须提供凭证,至于是缺省的密码还是认证令牌.指纹.虹膜之类由 winlogon 的小兄弟 gina 说了算.但如果每次访问对象都得重新认证,敲敲密码按按手印,实在是太麻烦了.于是自登陆到注销期间,开始每个帐号发一个临时的良民证,这个就是 session 的由来.为了统一管理,nt 系统对计算机自身的进程.服务进程等等也都建立了相应的 session,每个帐号每次每种登陆建立一个.平时你看着好像只有一个人用一个帐号登陆到系统,但实际上后台还有一堆 session 的一堆进程在跑. 一个典型的系统运行时 session 情况如下,此工具的开发以及字段的详细解释我会随后写一篇文章单独介绍.... 下一页