【问题标题】:How to start a native process with restricted permissions in .net and IIS如何在 .net 和 IIS 中启动具有受限权限的本机进程
【发布时间】:2014-01-08 19:33:23
【问题描述】:

我有一个在 .NET 和 IIS 上运行的 Web 应用程序,我需要启动一个本机进程。但是,这个进程并不完全受信任,所以我需要限制它对系统的访问,具体来说:

  • 阻止所有网络访问
  • 只能访问系统中的某些目录(可在运行时配置)

我不能用的东西:

  • .NET AppDomains(不适用于本机可执行文件)
  • 以单独的用户身份运行(IIS 无权以其他用户身份运行,我还没有找到任何方法来授予 IIS 这些权限)
  • 进程上的 UAC(目录访问必须在运行时可配置,而 UAC 似乎不允许这样做)

有谁知道我可以做到这一点的方法吗?

【问题讨论】:

  • Chrome 不使用沙盒库吗?
  • 这是服务器端,不是客户端。
  • 一个库可以在任何地方使用(如果它存在但我不确定)。沙盒与 GUI 无关。

标签: c# asp.net security iis


【解决方案1】:

根据进程的具体作用,一种选择是让 IIS 向进程发出信号以运行而不是直接运行。

例如,您可以创建一个简单的 Windows 服务,该服务从 IIS 接收信号(通过写入队列、在数据库中设置标志或 Windows 上可用的任何 IPC 机制),然后管理服务的生命周期本机进程(例如使用 Runas 启动它,等待完成,将结果发送回 IIS)。

如果可以将本机进程转换为 Windows 服务,则可以避免中间“代理”Windows 服务。

【讨论】:

  • 这实际上也是我尝试过的:制作一个侦听来自 Web 应用程序的信号的 Windows 服务,并从那里作为单独的用户运行进程。我发现运行 Windows 服务的用户(SYSTEM 用户,IIRC) 没有权限以不同的用户身份运行,就像 IIS 用户一样。 :-(
  • 可以配置您的 Windows 服务以按照您喜欢的任何用途运行。如果您查看服务,请右键单击“代理”服务,属性,登录选项卡。选择此帐户选项(措辞可能因 Windows 版本而略有不同)。输入您自定义创建的帐户,以提供完成任务所需的最小权限集。我怀疑 IIS 可以配置为以不同的用户身份运行,但我不建议这样做,因为它会为黑客打开新的攻击媒介。
  • 好的,我不知道您可以更改运行 Windows 服务的用户。我得试试。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 2016-07-14
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
相关资源
最近更新 更多