2014-01-16 56 views
1

Ruby on Rails的3.2 我的应用程序已经存储在图像:限制系统文件访问公共

http://name.name.com/system/images/imgs/xxx/xxx/xxx/thumb/xxx.jpg?xxxxxxxxx 

我注意到,你可以访问这些文件中没有登录时,我试图做一个的before_filter我的控制器,但是当我查看日志时没有查询,也没有使用控制器。

如何将系统文件的访问权限限制为仅在我的网站上登录的用户?谢谢

+1

移动文件了'public'文件夹中,然后用一个控制器动作用'send_file'将文件有助于只有经过身份验证的用户。 –

回答

1

您需要从$ RAILS_ROOT/public文件夹中移除这些文件并将它们移动到其他地方,例如, $ SHARED_FOLDER /上传/。

然后创建指向控制器路线:

class FilesController 
    def show 
    # first check credentials 
    path = ... # use params to look up the path, but be careful to check the 
       # validity! 
       # It's probably best to have an index that contains valid files 
       # and to only return those. Otherwise an attacker might be able 
       # to compromise your server and your data. 
    send_file path 
    end 
end 
+0

看来应该有一个简单的解决方案。如果我只将一些文件从我的数据库移动到不同的目录,那么可伸缩性和管理将变得非常快速。我想公开的大部分文件都是公开的。我能做些什么来管理数据库吗? – DDDD