【问题标题】:IIS vs. ASP.NET authorization - easiest way to secure static files?IIS 与 ASP.NET 授权 - 保护静态文件的最简单方法?
【发布时间】:2009-06-18 21:04:43
【问题描述】:

假设我在 web.config 中有以下内容:

<allow roles="Developers" />
<deny users="*"/>

这会锁定对 .aspx、.asmx 和其他 .NET 文件类型的访问,但它仍然允许未经授权的用户打开像 image.jpg 这样的静态文件。我明白为什么当有人要求 image.jpg 时,web.config 没有被要求提供授权信息(它不是 .NET 类型,IIS 可以绕过它),但是我怎样才能锁定整个应用程序呢?

我在网上找到的建议包括:

  • 为有问题的目录创建一个&lt;location&gt; 条目,IIS / .NET 将获取它。 (似乎没有。)
  • 您需要编写自己的 ISAPI 过滤器并将所有敏感文件的扩展名映射到该过滤器。
  • 您无需编写自己的 ISAPI 过滤器 - 只需将扩展映射到 aspnet_isapi.dll 即可。
  • 您根本不需要编辑 IIS,只需在 web.config 中为您的扩展创建一个 httpHandler 条目。 (我真的不想尝试对应用程序中的每个扩展都这样做。)

这一切都不像我记得在 Apache 中那样容易。向访问者询问密码并且不向任何没有密码的用户提供任何文件(静态或非静态文件),最简单的方法是什么?

【问题讨论】:

    标签: asp.net iis authorization


    【解决方案1】:

    启用wild card mapping for IIS 6。这将通过 ASP.NET 管道发送所有文件,保证对所有文件进行表单身份验证。它会降低性能(不知道会降低多少)。

    对于 IIS 5,嗯,升级到 IIS 6。

    您列出了 4 个想法:

    • 仅当您具有通配符映射(或映射特定扩展名)时,位置才有效。

    • 谁想写一个 isapi 过滤器?除非您有 IIS7,否则您无法轻松地使用托管语言来完成此操作。谁想写一个 c++ isapi 过滤器?

    • 通配符映射确实适用于上述警告(性能)

    • 同样,如果不向 IIS 注册这些特定扩展并通过 aspnet 路由它们,最后一个选项将无法工作。

    【讨论】:

    • ISAPI 过滤器不是很有趣,但也没有那么难,一旦你得到了基本代码,你会发现还有很多其他真正有用的事情可以做。如果您不被允许部署这样的东西,这对许多 Web 开发人员来说都是如此,那么它就是一个阻碍。
    • 我不相信。第一步仍然是学习 C++。托管程序员能做的最好的事情就是对 C++ 进行不安全/本机调用,这也是我必须编写的。
    • 这是一个很好的 scottgu 链接 - 今天早些时候我的 google mojo 没有找到它,但它正是我正在寻找的东西。谢谢。
    【解决方案2】:

    一个不错的简单方法是升级到 IIS 7 - 它现在有一个集成管道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2012-08-26
      相关资源
      最近更新 更多