ASP.NET Identity - 保护目录免受未经身份验证的用户的攻击

问题描述 投票:0回答:1

我正在使用 ASP.NET 4.5 OWIN Identity 并尝试阻止除经过身份验证的用户之外的所有用户访问目录。该目录包含原始文件,因此不可能将它们包装在 ASP LoggedInTemplate 标记中。

当我尝试阻止匿名用户访问该目录时,它失败了。

我尝试将以下内容添加到主 Web.config 文件中:

<system.web>
    <authorization>
        <deny users="?" />
    </authorization>
</system.web>

<location path="/docs">    
    <system.web>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
</location>

这样做会导致服务器出现 500 错误,并突出显示 location path="/docs" 行作为错误源。这是一个托管解决方案,因此我无法使用更改 IIS 服务器配置以允许覆盖的选项,尽管这对于遇到此问题的任何人来说似乎都是一个潜在的解决方案。

我现在已从主 web.config 中删除了上述内容,并在我想要保护的目录中添加了一个单独的 web.config 文件。新的 web.config 包含以下内容:

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

这不会产生错误,但允许未经身份验证的用户访问该文件夹,这正是我试图阻止的。

任何描述如何解决此问题的文章的想法或指示将不胜感激。

asp.net directory asp.net-identity
1个回答
6
投票

我的环境的解决方案是使用子目录中的 web.config 文件,但为相关文件类型添加自定义处理程序定义。

<?xml version="1.0"?>
<configuration>
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  <system.webServer>
    <handlers>
      <add name="PDFHandler" verb="*"
        path="*.pdf"
        type="System.Web.StaticFileHandler"
        resourceType="Unspecified" />
    </handlers>
  </system.webServer>
</configuration>

Web 服务器仅允许经过身份验证的用户访问子目录中的文件。

这篇文章引导我找到了解决方案:http://www.primaryobjects.com/CMS/Article112

© www.soinside.com 2019 - 2024. All rights reserved.