【问题标题】:IIS 6 - protect static files (www and without www)IIS 6 - 保护静态文件(www 和不带 www)
【发布时间】:2012-08-26 11:48:31
【问题描述】:

我们在 IIS 6 上有 ASP.Net 应用程序。它托管在我无法访问的某些服务器上。我们希望帮助文件夹中的静态文件(*.html、*.htm)受到保护(它们需要进行身份验证,因此我们需要将 html 和 htm 文件视为 aspx 文件)。

我在这里找到了一篇文章 - http://forums.asp.net/t/1184547.aspx(表单身份验证和 HTML 页面的 IIS 问题)。然后我写信给托管公司,他们为 IIS 6 创建了 html 和 htm 文件映射。其次,我配置了我的 web.config 文件,正如上面文章中所写的那样。结果像https://www.mypage.com/help/static.html 这样的链接受到保护(用户被重定向到登录页面)。

但是,https://mypage.com/help/static.html 之类的链接不受保护(用户不会被重定向到登录页面)。我在网上没有发现任何类似的问题。

1) 我想知道,什么会导致这个问题?是 IIS 6 配置不正确还是我应该更改我的 web.config?

2) 我写信给托管服务,他们建议我阅读有关 URLRewriting 的内容。我不觉得这是关于 UrlRewriting 的事情,或者是吗?我现在不使用任何 url 重写,应该吗?

【问题讨论】:

    标签: .net web-config


    【解决方案1】:

    主机可能会通过主机标头解析您的网站,并明确查找较长的 URL,即使 mypage.com URL 已解析。后者没有作为受保护的引用被捕获,因此它绕过了他们的检查。但是,您可以做的是编写一段代码来检查所请求的入站 URL,如果您看到“短”版本,请将 URL 重定向到应该得到正确身份验证/路由的全名想要。您甚至可以在 web.config 文件中配置基本的重写。

    this location 上有一个相当不错的主题摘要。您可能会发现 web.config 示例是在您的情况下尝试的最佳首选。

    【讨论】:

      【解决方案2】:

      IIS6 与 IIS7 的工作方式不同;在 IIS6 下,web.config 文件仅控制 ASP.NET 的工作方式,而不是 IIS,而在 IIS7 中,您有 <system.webServer> 元素来配置 IIS 的配置方式。

      其次,IIS7(默认情况下)调用“托管管道”,它有效地允许 ASP.NET 修改任何传入 HTTP 请求的各个方面,这就是 ASP.NET URL Routing 的工作原理(因为 Routing HTTP 模块检查每个传入的HTTP 请求,如果它与现有资源不匹配,则您的 ASP.NET 应用程序会处理它)。

      关于您的实际问题,我们需要更多详细信息。听起来您的主机创建了两个虚拟网站(一个处理“www.mysite.com”,另一个处理“mysite.com”,并且保护仅适用于“www”站点)。另一种解释是仅当主机头是“www.mysite.com”而不是也接受“mysite.com”(或任何其他主机头)时保护文件检查的规则。

      URL 重写在这里对您没有帮助。如果您的主机建议那么它告诉我他们可能不知道他们在做什么(另外,IIS6 不支持没有第三方扩展的 URL 重写)。

      【讨论】:

        猜你喜欢
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 2016-05-20
        • 2011-10-10
        • 2019-04-19
        • 2011-04-08
        • 1970-01-01
        • 2011-01-13
        相关资源
        最近更新 更多