asp.net-mvc - 如何保护用户上传的文件

标签 asp.net-mvc security architecture file-upload

我有 asp mvc 项目。我在其中添加了目录结构:

...
  UserUploads
    User_1
      Images
        Original
        Thumb
        Display
    User_2
    User_n
...

如何让这个文件夹结构对用户不可见?我不希望未经授权的用户通过键入 url 看到此图像。每个用户都有自己的图像,只有某个用户的“ friend ”用户才能看到它的图像。我检查了 facebook 图片,图片地址如下:

http://a4.sphotos.ak.fbcdn.net/hphotos-ak-ash4/296040_2530953916384_1329592446_32898884_1499197273_n.jpg

那么确保用户上传文件安全的最佳做法是什么?

最佳答案

那么,您可以使用 2 种方法:

  1. 真正的安全性 - 完全限制对文件夹结构的访问,并且仅使用一些 HttpHandler(或 MVC 操作)来为它们提供服务(在评估访问权限后,通过 TransferFile 或流写入器将它们写入响应......)。从性能的角度来看,这是非常糟糕的——没有缓存,每张图片的整个服务器端处理等等。

  2. “混淆”安全性 - 简单地生成无法猜测的文件名(Guid 是很好的候选者),因此任何无法访问将其文件名生成为 HTML 的页面的人都无法直接访问它们。当然,如果一个“ friend ”访问它,然后将文件 URL 提供给未经授权的人,但他可以轻松地将文件本身发送给他......这种方式的性能非常好 - 文件可缓存(通过 IIS 和客户端),您的应用不必处理图像请求等。

关于asp.net-mvc - 如何保护用户上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817473/

相关文章:

c# - 在 RedirectToAction MVC 中传递复杂对象

c# - 从 DateTime.Now 计算 db.DaysPastDue - Controller 中的 db.Loan.DueDate

apache - 如何避免浏览器在发送响应后呈现恶意内容

.net - 软件带宽/数据库增长公式

.net - "Dying is Awesome"是首选吗?

api - REST API : Where should I code my workflow?

asp.net-mvc - MVCContrib 支持 MVC4 吗?

security - 如何在我的设备上安装受信任的 CA 证书?

javascript - 从 HTTP 页面通过 HTTPS 获取 JS 文件

javascript - 使用 MVC、JavaScript 显示弹出窗口