保护MVC中的文件/文件夹

时间:2014-01-27 09:56:16

标签: security asp.net-mvc-4 web-config

我想保护一个文件夹,以便只有登录的用户才能访问它。此文件夹包含一组仅记录在用户应该能够下载的图像。

我有两种方法可以做到这一点。

  1. 为用户提供指向图像文件的直接链接
  2. 创建下载操作并允许他们通过该
  3. 下载文件

    我的问题是在这两种情况下,我应该如何阻止访问该文件夹并仅允许登录用户?如果我要创建一个动作,我可以通过Authorize属性保护它。但它无法保证对该文件夹的直接访问。

    我尝试在我要保护的文件夹中的web.config文件中使用下面的配置。但它可以被匿名用户访问。

    <system.web>
    <authorization>
      <deny users="?"/>
      <allow users="*"/>
    </authorization>
    

2 个答案:

答案 0 :(得分:0)

将您的图片存储在App_Data根文件夹中 - 这将停止下载操作之外的直接图像文件下载。

e.g。无法访问http://www.example.com/App_Data/Secure_Images/image1.jpg,因为ASP.NET会阻止访问。

答案 1 :(得分:0)

默认情况下,常规文件不会通过asp.net管道。为了使它们生效,您需要设置runAllManagedModulesForAllRequests = true ...

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">

这样做之后,您的授权设置将起作用。