iis 限制访问web.config中的文件/文件夹

zxlwwiss  于 2023-03-18  发布在  其他
关注(0)|答案(3)|浏览(379)

我尝试了各种各样的方法来限制对文件夹的访问,从最简单的拒绝所有用户访问,只授予我自己访问,到尝试角色/用户组合等。特别是,文件夹混合了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>

EDIT解决方案最终呈现。

这是理解授权段(感谢Tetsuya提供了有关排序授权规则的有用提示)、包括处理程序段以及为托管代码配置应用程序池的组合。

fiei3ece

fiei3ece1#

似乎您在组成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,但他们的授权仍然不起作用。即使他们允许访问他们的角色,用户也不能访问特定的页面/文件夹。常见的原因是将<deny../>放在<allow ../>之前。由于 * 授权是从上到下完成的 *,规则被检查,直到找到匹配。
参考:
Setting authorization rules for a particular page or folder in web.config

4c8rllxm

4c8rllxm2#

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

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

atmip9wb3#

我们通过重写URL实现了这一点。

<system.webServer>
    <rewrite>
        <rules>
            <clear />
            <rule name="RestrictAccess" enabled="true" patternSyntax="ExactMatch" stopProcessing="true">
                <match url="MyFolder/MyFile.zip" />
                <action type="AbortRequest" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

相关问题