为什么IIS在使用应用程序池帐户时使用IUSR_Machine帐户加载aspnet_isapi.dll?

我最近的任务是修复运行IIS 6.0的Windows Server 2003服务器:

HTTP Error 401.3 - Unauthorized: Access is denied due to an ACL set on the requested resource.

它开始给予这些回应后,更新补丁kb2633880应用似乎已经改变了一些默认权限与IUSR_Machine帐户和.Net框架目录。

问题是,所有的asp.net资源(例如.aspx)的请求不工作,而其他一切(例如文本,HTML)。 应用程序设置为使用IUSR_machine帐户和networking服务为应用程序池帐户提供匿名请求。

我validation了networking服务帐户可以访问C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录就好了,但IUSR_machine帐户不能。 在授予IUSR_machine帐户对C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录的访问权限后,问题就解决了。 这对我来说似乎很奇怪。

我的问题是为什么IIS不使用我的应用程序池(networking服务)的帐户加载aspnet_isapi.dll? 从上面的故障排除来看,似乎很清楚,实际上是使用IUSR_machine来实现的,这似乎是一个安全漏洞。 web.config中的标识标记未设置为默认值。

我将不胜感激任何意见,谢谢。

我不能说你的期望,但几乎每个系统或.Net DLL的默认值是用户有读取权限。

Aspnet_ISAPI既是filter也是扩展,所以可以通过W3WP启动(作为App Pool帐户)加载,或者通过访问脚本映射文件(脚本映射实际上在用户执行工作的上下文中运行DLL,如你所料)。