【问题标题】:How to secure uploaded files in ASP.Net如何保护 ASP.Net 中上传的文件
【发布时间】:2014-09-16 10:35:18
【问题描述】:

我在asp.net中上传excel、pdf、word、ppt等文件。我怎样才能使它安全。

假设我有一个网站 www.example.com,并且我已经在根目录的“文件”文件夹中上传了文档。我上传的文件的名称是 3828392839.pdf,如果在地址栏中输入“www.example.com/Files/3828392839.pdf” url,则它允许打开和下载文档。我需要如果有一个有效的登录用户,那么它允许打开或下载文件。

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您必须在保存文件时为此目的创建有效的文件夹结构。

例如。如果用户 ID 为 20052 的用户登录并上传文件。那么文件路径应该是:

Files/20052/3828392839.pdf

这里我创建了与用户ID相同的文件夹名称来保存上传的文件。

打开文件时,您必须比较 foldername 即 20052 和登录的 userid

如果它们相同,则允许download 文件。

【讨论】:

  • 但是静态文件并不总是由 asp.net PIPE 管理。所以你需要一些配置才能工作
【解决方案2】:

您应该根据您的要求在 asp.net 站点中实施适当的身份验证和授权。

要了解更多信息,请访问此链接

【讨论】:

    【解决方案3】:

    很简单。创建一个普通的 ASP.NET 页面。执行您的身份验证,但是您想这样做,如果他们通过身份验证,请按照此处所述将文件发送到响应...

    How to send file in HttpResponse?

    或者,如果他们没有通过身份验证,请不要发送文件,而是使用一些 html 来响应,例如“拒绝访问”

    【讨论】:

      【解决方案4】:

      您可以通过创建对文档文件夹的权限来保护这一点。这意味着您需要获得上传和下载文件的权限。

      对于简单的 Windows 身份验证:将读取器和写入器角色创建为本地用户/组。 对于基本身份验证:最好是对角色使用数据库身份验证。

      如果您使用的是 IIS7.0,则需要检查 IIS apppool 是否配置正确

      【讨论】:

        【解决方案5】:

        如果您使用的是 IIS 7+,请参阅此问题: How do I protect static files with ASP.NET form authentication on IIS 7.5?.

        对于 IIS 6,您可以将文件放在 app_data 文件夹中,并且您需要创建一个处理程序来提供文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-11
          • 1970-01-01
          • 1970-01-01
          • 2015-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多