gpt4 book ai didi

asp.net - IIS 6 忽略 Web.config 授权设置

转载 作者:行者123 更新时间:2023-12-02 16:46:11 25 4
gpt4 key购买 nike

上下文:

  • Windows 2003 Server 上的 IIS 6
  • ASP.NET 3.5 sp1
  • 从虚拟目录运行的 C# Web 应用程序

我不想提供一些文件。例如,根目录中有一个不可访问的 hibernate.cfg.xml。日志目录中也有日志文件。在本地开发服务器 (Visual Studio 2008) 上,可以通过 Web.config 以多种方式保护 NHibernate 配置文件:

<location path="hibernate.cfg.xml">
<system.web>
<authorization>
<deny users="?"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

或者

<httpHandlers>
...
<add path="*.cfg.xml" verb="*" type="System.Web.HttpForbiddenHandler" />
</httpHandlers>

可以通过另一个Web.config文件来保护不同目录中的日志:

<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</configuration>

当使用 aspnet_compiler.exe 编译应用程序并将其部署到 IIS 6 服务器时,这些都不起作用。日志中没有错误。这些文件对任何人来说都是可读的。该应用程序是使用 MSBuild 编译和安装的,如下所示:

<AspNetCompiler Force="true" Debug="true" PhysicalPath="$(DeploymentTempPath)\$(DeploymentAppName)" TargetPath="$(DeploymentPath)\$(DeploymentAppName)" VirtualPath="/$(DeploymentAppName)" />

如何使 IIS 6 遵守 Web.config 中的授权规则。

注意:假设我无法将这些文件移出部署目录。

最佳答案

看来 IIS 不会将对 .xml 或 .txt 文件的请求转发到 ASP.NET,因此它没有机会应用其授权控制。

要解决此问题,我必须执行以下操作(来自 this forum post ):

  1. 从 IIS 控制台中,打开我的应用的虚拟目录的属性。
  2. 虚拟目录 > 配置
  3. 使用 ASP.NET 过滤器为扩展名“.xml”添加新处理程序(在我的例子中为 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll)
  4. 所有动词。取消选中“脚本引擎”和“验证该文件是否存在”。

有没有办法从 Web.config 内部做到这一点? ?

关于asp.net - IIS 6 忽略 Web.config 授权设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1798157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com