通过 web.config 设置拒绝目录中的所有文件

2024-05-02

作为测试,我尝试使用 web.config 通过以下方式控制安全性:

  1. 拒绝访问目录中除特定文件之外的所有文件
  2. 允许访问目录中除特定文件之外的所有文件

所以我设置 web.config 如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!-- Deny access to all files in a directory, except for a specific file -->
  <location path="NonAccessibleDirectory">
    <system.web>
        <authorization>
          <deny users="?"/>
          <deny users="*"/>
        </authorization>
    </system.web>
  </location>

  <location path="NonAccessibleDirectory/AccessibleFile.html">
    <system.web>
        <authorization>
          <allow users="?"/>
          <allow users="*"/>
        </authorization>
    </system.web>
  </location>

  <!-- Allow access to all files in a directory, except for a specific file -->
  <location path="AccessibleDirectory/NonAccessibleFile.html">
    <system.web>
        <authorization>
          <deny users="?"/>
          <deny users="*"/>
        </authorization>
    </system.web>
  </location>

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

</configuration>

正如预期:

  • 如果我浏览到不可访问的目录并且未指定文件,则会拒绝访问
  • 如果我浏览到可访问目录并且不指定文件,我可以看到文件列表

我遇到的问题是:

  • 如果我浏览到不可访问的目录并指定一个文件,我可以查看它,并且我预计不会被授予访问权限
  • 如果我浏览到可访问目录并指定一个我已拒绝通过 web.config 访问的文件,我仍然可以查看它,并且我预计不会被授予访问权限

艾米我配置错误吗?


您可能会遇到以下差异ASP.NET URL 授权 and IIS URL 授权。有关于此的详细摘要位于http://www.iis.net/learn/manage/configuring-security/understanding-iis-url-authorization#Differences http://www.iis.net/learn/manage/configuring-security/understanding-iis-url-authorization#Differences

简而言之,默认情况下 ASP.NET 与 web.config 发生的情况是,它仅应用allow and deny由托管处理程序处理的文件的规则。

.txt 和 .html 文件等文件由 IIS 而不是 ASP.NET 处理,因此授权规则不适用于它们。

您可以通过将其添加到主 web.config 以使用 IIS 版本来测试这一点。

<system.webServer>
    <modules>
        <remove name="UrlAuthorization" />
        <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"  />
    </modules>
</system.webServer>

我使用相同的安全性以及相同的目录和文件对此进行了测试,所有似乎都有效

如果您使用其他身份验证方法(例如表单),则更完整的版本可能是这样

<system.webServer>
    <modules>
        <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />
        <remove name="UrlAuthorization" />
        <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"  />
        <remove name="DefaultAuthentication" />
        <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
    </modules>
</system.webServer>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 web.config 设置拒绝目录中的所有文件 的相关文章

  • 如何从内容页检索母版页中的控件

    当我最近问一个关于如何从内容页检索母版页中的控件 许多人建议我使用内容页面中的这段代码 Label lbl this Master Page FindControl uxLabel as Label Note any server cont
  • Page_ClientValidate 未定义

    我正在使用 ASP NET 2 0 并使用 IE8 作为我的默认浏览器 但无论我尝试多少次 Page ClientValidate一直给我这个错误 它没有定义 我怎么解决这个问题 请帮忙 所以 我想你的页面中可能没有任何RequiredVa
  • 当用户告诉浏览器“刷新”时,是否应该填写 HTTP_REFERER?

    我正在尝试使用引用标头检查作为深度防御 即多种安全技术之一 但请注意仅依赖于任何一种技术 有时 MSIE 似乎不包含刷新时的引荐来源网址 这是预期的行为吗 无论如何 我是否可以检测刷新 以便我知道缺少引荐来源网址是可以的 是的 我知道引荐来
  • Web 服务需要一个 DataSet 对象,我如何通过 ColdFusion 或原始 XML 提供该对象?

    我需要调用用 NET 编写的 Web 服务 进行调用的应用程序是用 ColdFusion 编写的 Web 服务期望的参数之一是 DataSet 对象 我无法在 ColdFusion 中实例化 NET DataSet 对象 如何向 Web 服
  • GeneratePasswordResetTokenAsync 和GenerateUserTokenAsync 的默认TokenLifespan 是多少

    我到处都找过 但似乎无法确定每个选项的默认值是什么 我还需要知道是否有办法为每个设置不同的寿命 谢谢 对于任何令牌来说 默认值显然都是 24 小时 您可以将其设置为不同的值 但相同的值将同等地应用于所有令牌 GenerateEmailCon
  • 自定义代码访问安全属性

    我创建了以下属性 Serializable AttributeUsage AttributeTargets Class AttributeTargets Method AllowMultiple true Inherited true pu
  • 无法将 MVC 4 部署到服务器

    我的 Web 应用程序只是一个用 VS 2010 MVC 4 制作的简单 Web 应用程序 没有任何外部代码 它只是 VS 2010 的默认应用程序 我有 Plesk 的豪华 Windows 托管 我从未更改过帐户中的任何功能 我将所有文件
  • Asp.net MVC 路由 - 防止通过约束路由到 XML 文件

    我正在尝试找到一种方法来阻止用户访问特定的 xml 文件 我尝试过做 routes MapRoute SiteMap SiteMap siteMap xml new new isLocal new LocalHostRouteConstra
  • .NET 中是否有内置函数可以对密码进行哈希处理?

    我看到这个问题加密 散列数据库中的纯文本密码 https stackoverflow com questions 287517 encrypting hashing plain text passwords in database 我知道我
  • HttpContext.GetGlobalResourceObject 始终返回 null

    我在 App GlobalResources 文件夹中创建了两个文件 SiteResources en US resx SiteResources sp SP resx 两者都包含 SiteTitleSeparator 的值 这是我想要做的
  • 服务器不支持 C# 中的安全连接

    我在下面的代码中收到错误 服务器不支持安全连接 SmtpClient smtp new SmtpClient MailMessage mail new MailMessage mail From new MailAddress gmail
  • Apache Camel 2.14 Rest DSL 安全

    我想使用 Apache Camel 2 14 中新的 Rest DSL 来创建一个 Rest 接口 我想使用 Jetty 组件 并且我有一个如下所示的基本示例设置 Spring安全配置
  • 如何从客户端设置 HTMLEditorExtender HTML

    我无法让它工作 这是我在另一个线程中找到的代码 但它对我不起作用 我得到 set content 不是函数 find set content whatever 这仍然有效吗 我还尝试设置它扩展的文本框的值 尝试设置两者的 InnerHtml
  • 从asp.net ListBox中获取所有选定的项目

    任何人都知道一个顺利的方法来获得所有selected使用扩展方法在列表框控件中的项目 并且 请不要让我争论与如何获取这样一个列表无关 因为最终一切都使用循环来迭代项目并找到选定的项目 var selected yourListBox Ite
  • EF存储库模式多对多插入

    我们有 2 张桌子 表权限 public class Authority public int ID get set public string Name get set 表代理 public class Agent public int
  • SSL 和会话劫持/固定

    快问 SSL 是否完全防止会话劫持 固定 谢谢 不可以 例如 在以下情况下可能会发生劫持 被黑客入侵的 CA 根签署无效证书 该证书可用于发起中间人攻击 被黑客攻击的域名所有者电子邮件收件箱使黑客有可能购买经过域名验证的证书 错误的密钥策略
  • 如何从 ASP.net 网站写入 OutputDebugString?

    我需要从网站上的代码输出一些调试信息 我怎样才能打电话OutputDebugString来自 ASP net 网站 并将其显示给运行 DbgView 的用户 Note 网站不支持System Diagnostics Trace TraceW
  • 在 Mac 上开发和测试 ASP.NET 的应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我开始学习一些asp net 所以我正在寻找一个使用mac 开发asp net 的应用程序 我知道 D
  • 将图像添加到 ASP.Net 中的单选按钮列表

    我正在尝试将图像添加到单选按钮列表控件 但它不起作用 我试过这个 RadioButtonList2 Items Add new ListItem String Format src Colors Dallas 625527 1 1 png
  • 如何将 .ashx 处理程序与 asp:Image 对象一起使用?

    我有一个 ashx 处理程序 using System using System Web public class Thumbnail IHttpHandler public void ProcessRequest HttpContext

随机推荐