了解ASP.NET应用程序文件夹

时间:2009-08-18 14:53:32

标签: asp.net security iis frameworks

ASP.NET中的应用程序文件夹用于存储对运行网站至关重要的各种元素。我想更深入地了解这些文件夹,特别是文件夹可访问性。根据{{​​3}}上的文章:

  

应用程序文件夹的内容,   除了App_Themes文件夹,是   没有响应Web   请求,但可以从中访问   应用程序代码。

对这些文件夹的任何浏览器请求都会导致“404 - 找不到页面”。

那么是什么阻止了App_CodeApp_DataApp_WebReferencesbin等文件夹被提供给用户?它是一个IIS硬编码“不提供此文件夹吗?”它是权限配置吗?无论如何有意/无意地绕过这个?

3 个答案:

答案 0 :(得分:3)

在我的IIS7.5配置上,在C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config中找到了这一部分:

<hiddenSegments applyToWebDAV="true">
    <add segment="web.config" />
    <add segment="bin" />
    <add segment="App_code" />
    <add segment="App_GlobalResources" />
    <add segment="App_LocalResources" />
    <add segment="App_WebReferences" />
    <add segment="App_Data" />
    <add segment="App_Browsers" />
</hiddenSegments>

See also IIS Documentation.

答案 1 :(得分:1)

在Windows Server 2008上的IIS7中,ASP.NET更紧密地集成到整个处理管道中,所以我想在IIS7中,ASP.NET很容易说“不,我不会触摸那个。“

在IIS6中,IIS本身对IIS的了解很少,而是通过ISAPI配置来控制它。

在IIS6 IIS管理器中,右键单击一个网站,获取“属性”,转到“主目录”选项卡,然后单击右下角的“配置”。这显示了ISAPI应用程序扩展以及为每个扩展做了什么。

对于所有ASP.NET扩展(aspx,ascx,config,浏览器,大量其他),它指定由C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll <完成的处理/ p>

然后,ASP.NET系统为C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG <中的全局machine.config和/或web.config文件中定义的每种文件类型注册了处理程序。 / p>

例如,在全局web.config文件中,在httpHandlers元素下:

<add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>

因此,不仅仅是这些特殊文件夹,还有许多类型的文件,还有许多不允许浏览的保留文件。

答案 2 :(得分:0)

.net框架本身拦截对这些文件夹的请求(以及您应该允许浏览的一堆其他文件类型)并将404返回给IIS,然后将其作为“404 - Page传递回浏览器”找不到“。

因此,它不会发生在权限级别,甚至是IIS级别。它位于框架内 - 可能位于全局web.config中的一个HttpHandler中。

如果您查看,可以看到大量明确配置为不提供的文件扩展名。据推测,您可以调整设置并使其作为xml提供web.config文件(这与通常表示不提供此文件类型的行为不同)。

值得注意的是,我没有特别看到全局web.config文件中提到的任何特殊文件夹(app_code等)。也许它是在其他HttpHandler中处理的 - 例如,.aspx的处理程序可能包含一些代码,阻止提供位于特殊文件夹中的.aspx文件等。