alt text http://img185.imageshack.us/img185/2080/mydiagram.png
Maxima.exe是作为本机代码而不是托管代码构建的计算机代数系统。MyService作为一个socket服务器,它将为每个浏览器向Web服务器提交数学表达式实例化一个新的Maxima进程。
我不能在这里使用AppDomain,因为Maxima是一个本机代码。但是,我想要AppDomain提供的安全策略,比如限制在文件系统上写入数据。
我的问题是,当我在进程中而不是在AppDomain中实例化Maxima时,如何获得类似AppDomain的安全策略?
发布于 2010-07-30 18:29:42
由于Maxima.exe是本机可执行文件,因此您可以应用的唯一安全策略是基础Windows操作系统支持的安全策略。不幸的是,这意味着您的选择非常有限:您唯一能做的真正有用的事情就是在具有有限权限的用户帐户的上下文中运行Maxima.exe。但是,当涉及到禁止对系统的大部分内容进行写访问时,这应该就足够了。
过时但仍然有用的文章Safe Impersonation With Whidbey展示了如何在另一个用户帐户的上下文中运行worker函数:然后从该worker函数启动Maxima.exe。
当然,以受限用户身份运行仍然允许各种Maxima.exe实例在一定程度上相互干扰(即覆盖在实例工作目录中创建的文件)。使用唯一的、随机创建的工作目录(例如,基于GUID)启动每个实例可能会为您的目的提供足够的安全性:如果不是这样,您可能实际上需要为每个实例创建不同的用户帐户(或者至少有一个用于此目的的用户帐户池)。
归根结底,这一切都取决于“我如何使用Windows base-only功能来解决我的安全问题”,不幸的是,您将无法访问更好的.NET安全功能或非Windows平台(jails、systrace等)上的工具。
https://stackoverflow.com/questions/3370543
复制相似问题