【问题标题】:Restrict access to file/folder in web.config限制对 web.config 中文件/文件夹的访问
【发布时间】:2017-06-14 06:05:49
【问题描述】:

我尝试了各种方式来限制对文件夹的访问,从最简单的拒绝所有用户访问和仅授予我自己访问权限到尝试角色/用户的组合等。特别是文件夹混合了 aspx 和 html 文件。

有人可以帮忙吗?以下是我基于其他类似问题的内容:

<configuration>
    <system.web>
       <!-- mode=[Windows|Forms|Passport|None] -->
       <authentication mode="Windows" />
    </system.web>
  <system.webServer>
    <handlers>
        <add name="HTMLHandler" type="System.Web.StaticFileHandler" path="*.html" verb="GET" />
    </handlers>
  </system.webServer>
    <location path="AdminOnly">
        <system.web>
            <authorization>
            <deny users="*" />
            <allow users="domain\user1, domain\user2, domain\user3" />
            <allow roles="domain\role1, domain\role2" />
            </authorization>
        </system.web>
    </location>
</configuration>

编辑 解决方案终于提出了。

这是对授权部分的理解(感谢 Tetsuya 提供有关订购授权规则的有用提示),包括处理程序部分以及为托管代码配置应用程序池。

【问题讨论】:

  • 问题解决了吗?

标签: asp.net asp.net-mvc iis web-config


【解决方案1】:

您在编写authorization 元素时似乎有错误的顺序,必须先声明allow 部分以允许某些用户担任某些角色,然后再拒绝其他所有内容。

因此,由于在允许定义的用户之前拒绝所有用户解决,因此下面的这种构造是错误的:

<location path="AdminOnly">
    <system.web>
        <authorization>
        <deny users="*" />
        <allow users="domain\user1, domain\user2, domain\user3" />
        <allow roles="domain\role1, domain\role2" />
        </authorization>
    </system.web>
</location> 

正确的顺序应该是这样的:

<location path="AdminOnly">
    <system.web>
        <authorization>
        <allow roles="role1, role2" />
        <allow users="user1, user2, user3" />
        <deny users="*" />
        </authorization>
    </system.web>
</location>

在参考部分,Guru Sarkar 解释了问题所在:

常见错误

我看到有人抱怨他们设置了自己的角色 正确并且也进入了他们的 web.config 但仍然是他们的 授权不起作用。即使他们允许访问他们的 用户无法访问特定页面/文件夹的角色。常见的原因 因为将&lt;deny../&gt; 放在&lt;allow ../&gt; 之前。由于授权是从上到下进行的,因此会检查规则直到找到匹配项。

参考:

Setting authorization rules for a particular page or folder in web.config

【讨论】:

  • 这个问题似乎更多是围绕阻止访问目录中的 html 文件。一旦我包含处理程序,无论我在授权部分中输入什么内容,都会拒绝访问 html 文件。
  • 将应用程序池从无托管代码更改为使用 .Net 版本 4,现在可以按预期工作。
【解决方案2】:

您能否尝试在您的特定文件夹中创建新的 web.config 并将其添加到您文件夹的 web.config 以限制所有用户

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

【讨论】:

  • 谢谢哈桑,是的,我确实从那里开始工作,所以工作正常
  • 它有效,但不是解决实际问题的方法。
猜你喜欢
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 2017-09-17
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
相关资源
最近更新 更多