RoR上传文件安全问题

时间:2011-01-13 00:37:08

标签: web-applications ruby-on-rails-3

我对Ruby on Rails有疑问。我目前正在使用名为Paperclip的宝石来上传文件。

我的问题是上传的文件进入/ public,可以从任何人轻松访问。如何隐藏上传的文件?并且只允许正确的用户下载文件?

我对隐藏某人的链接不感兴趣。但我感兴趣的是必须有人登录才能下载文件。

感谢。

编辑 - http://rdoc.info/github/thoughtbot/paperclip/master/Paperclip/Storage/Filesystem

我仍然不知道如何保护后端的文件?

1 个答案:

答案 0 :(得分:2)

您可以通过多种方式处理此安全问题。

这是我向你提出的那个。

  1. 您使用Paperclip上传文件。这些文件将存储到您拒绝从浏览器访问的目录中。

  2. 在上传过程中,您会将文件的信息存储到数据库服务器的表格中。

  3. 您将创建一个控制器来列出和下载您的文件。您可以通过检查他的权利来检查用户是否可以访问或下载该文件。

  4. 当您想开始下载时,您将使用send_file强制下载并隐藏文件的真实路径。

    示例:

    @filename ="#{RAILS_ROOT}/public/dir/a/b/file.mp3"
    send_file(@filename, :filename => "music.mp3")
    
  5. 希望这有帮助!