IIS7 中的托管客户可以使用 asp.net 和 System.Diagnostics 列出所有系统的进程 ID。他们还可以杀死属于他们自己的应用程序池的那些。对于共享托管环境来说,这似乎是 IIS7 中的一个大安全问题。有关如何防止普通用户访问 System.Diagnostics 的任何建议?如何仅限于管理员?
问问题
351 次
1 回答
0
与 Windows 2003 和 IIS6 不同,许多共享的 Windows 2008/IIS7 托管环境为其客户提供专用应用程序池和完全信任。
虽然客户可能能够启动和终止他们自己的进程(包括他们自己的工作进程),但前提是站点运行的帐户的身份被锁定,那么就不会造成真正的伤害。此外,对于拥有不断杀死自己的应用程序池的代码的客户(除了强制重新启动工作进程以允许Application_Start
在您需要在那里重新加载某些设置时触发类型事件之外)有什么好处?
我为共享主机工作,我们实际上为客户提供了通过我们的管理系统启动、停止和回收他们的专用池的能力,他们在代码中所做的一切几乎都是一样的。
可能发生的最糟糕的情况是客户启动了一个消耗大量内存或过多 CPU 的进程(但随后即使是他们自己的 ASP.NET 代码也可能会因为这样做而失控)。我们会持续监控我们的服务器是否存在此类异常行为,并可以在收到警报后的 2-3 分钟内追查肇事者。最终用户会收到一个友好的警告,并被告知不要再这样做了,如果他们这样做了,那么他们的网站会立即关闭。
唯一一次我会担心主机是否在完全信任的情况下运行共享池,但如果他们这样做,那么他们还有另一个安全问题需要克服,进程终止将是他们最不担心的问题。
于 2011-05-11T15:58:04.287 回答