就应用程序池的安全性而言,咱们必须保证 w3wp.exe 工做进程能够读取 IIS 配置数据,由于这是 w3wp.exe 工做进程正常工做的基础。w3wp.exe 工做进程必须可以读取其所服务的网站的 IIS 设置。这意味着 w3wp.exe 工做进程必须对 applicationHost.config 文件中配置的大多数内容具备 Read 访问权限。问题是:若是每一个应用程序池均可以读取整个配置文件,那么,配置文件中的全部信息就都暴露给每个应用程序池了。所以,咱们必须确保:就 applicationHost.config 文件中的总体内容而言,不容许每个应用程序池都具备对这些总体内容的 Read 权限或 Write 权限。不然,某些用户就能够获取对敏感信息的访问权限。
为了解决这个问题,IIS 开发团队提出了一种方法,容许 w3wp.exe 工做进程读取与其有关的全部设置,可是同时又不须要访问其余应用程序的信息,也不能访问敏感的全局设置数据,这样就可以在不一样的应用程序工具之间作到彻底的配置隔离。
当应用程序池第一次启动时,Windows Process Activation Service(WAS)仅得到与该应用程序池有关的信息,而且在 C:\inetpub\temp\appPools\ 目录下建立了一个临时文件夹,为这个应用程序池设置 ACL,而后将信息保存在这个临时文件夹中。下图显示了这个保存了 WCF.Inventory.config 文件的文件夹。安全
.config 文件中的数据大多数与 applicationHost.config 文件中的数据相同,可是没有保存任何其余应用程序池中的 Web 网站信息。咱们没有必要在 .config 文件中保存其余应用程序池中的 Web 网站信息,由于w3wp.exe 工做进程是由 WAS 管理的,并且 w3wp.exe 工做进程也不须要使用自身的信息。
若是与该文件有关的数据发生了变动,那么这个临时文件也会随之更新,不然,这个文件就一直保存在上述目录中,直到 IIS 中止运行。若是咱们删除这个文件,那么 IIS 将没法正常执行该应用程序池的功能,全部与该应用程序池有关的操做都会发生失效,而且仅当 IIS 重启后,在从新生成这个被删除的文件以后,这个问题才能获得解决。若是咱们仅仅是回收这个应用程序池,那么这个被删除的文件不会被从新生成,所以没法解决这个问题。因此,除非错误定位时必须使用这些文件,而且确实可以理解这些文件的功能和各类方式,不然最好不要对这些文件进行操做。
在 IIS 7.0 中建立临时文件的整个过程都是全新开发的,从而确保了一个应用程序池中的恶意代码没法从应用程序池中读取敏感配置数据。app