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