我们正在为我们自己的应用程序提供文件,以便从Web服务器(包括IIS)下载.一个这样的文件具有.config扩展名.事实证明,IIS不会为此服务,因为它认为它是自己的配置文件.我正在考虑使用.configuration.这样可以吗?是否有从IIS提供服务的“禁止”扩展名列表?
解决方法
是的,有一个名为Request Filtering的阻止扩展列表,您可以运行:
appcmd list config -section:system.webServer / security / requestFiltering
你会看到类似的东西:
appcmd list config -section:system.webServer / security / requestFiltering
你会看到类似的东西:
…
…
在我的Windows 7机器中,该列表包括:
.asa,.asax,.ascx,.master,.skin,.browser,.sitemap,.config,.cs,
.csproj,.vb,.vbproj,.webinfo,.licx,.resx,.resources,.mdb,.vjsproj,
.java,.jsl,.ldb,.dsdgm,.ssdgm,.lsad,.ssmap,.cd,.dsprototype,
.lsaprototype,.sdm,.sdmDocument,.mdf,.ldf,.ad,.dd,.ldd,.sd,
.adprototype,.lddprototype,.exclude,.refresh,.compiled,.msgx,.vsdisco
请注意,您也可以在应用程序中指定更多扩展名或允许使用文件夹中的web.config允许的其他扩展名.
警告不要这样做,因为.config文件可能包含敏感信息.
例如,如果您使用以下内容在应用程序中删除web.config,它将允许用户下载.config文件:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <security> <requestFiltering> <fileExtensions> <remove fileExtension=".config" /> </fileExtensions> </requestFiltering> </security> </system.webServer> </configuration>
有关详细信息,请参阅:http://www.iis.net/configReference/system.webServer/security/requestFiltering
最后,如果你要使用一些随机扩展,你需要确保IIS也知道要使用的mime类型,并知道如果你想允许静态文件下载你将使用的扩展,并且需要在staticContent部分(appcmd list config -section:system.webServer / staticContent).您也可以像上面一样在web.config中配置它.