2009-06-18 45 views
4

比方说,我有一个web.config中的以下内容:IIS与ASP.NET授权 - 保护静态文件的最简单方法?

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

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

建议我在网上找到包括:

  • 创建问题和IIS/.NET将它捡起目录<location>项。 (它似乎没有。)
  • 您需要编写自己的ISAPI筛选器并将所有敏感文件的扩展映射到该映射。
  • 您不需要编写自己的ISAPI筛选器 - 只需将扩展名映射到aspnet_isapi.dll即可。
  • 您根本不需要编辑IIS,只需在web.config中为您的扩展创建一个httpHandler条目即可。 (我真的不想为应用程序中的每个扩展都这样做)。

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

回答

2

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

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

您列出4点的想法:如果你有外卡映射(或特定扩展名映射)

  • 位置才有效。

  • 谁想写一个isapi过滤器?除非您有IIS7,否则您无法轻松地以管理的语言进行操作。谁想要编写一个C++ isapi过滤器?

  • 通配符映射就上述警告(性能)工作

  • 同样,不与IIS注册那些特定的扩展,并通过ASPNET路由他们最后的选择不会工作。

+0

ISAPI过滤器并没有太多乐趣,但它并不那么难,而且一旦你获得了基本代码以及其他许多其他真正有用的东西,你就会发现它。如果你不允许部署这种对于许多web开发者来说是这种情况的事情,那么它就是一个很好的例子。 – AnthonyWJones 2009-06-18 21:33:07

2

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

+0

+1这将是我的首选选项。 – AnthonyWJones 2009-06-18 21:29:33

相关问题