Ruby on rails 在RESTful API(Rails/Paperclip)中提供可靠的文件

Ruby on rails 在RESTful API(Rails/Paperclip)中提供可靠的文件,ruby-on-rails,security,rest,paperclip,Ruby On Rails,Security,Rest,Paperclip,我希望我的用户能够上传一些文件,这是严格相关的他们。只有在资源对web服务进行身份验证时,资源才可见,文件附件也应该是 现在使用回形针,我可以指定文件的上载位置,甚至可以像这样混淆文件名: has_attached_file :avatar, { :url => "/system/:hash.:extension", :hash_secret => "longSecretString" } 但是,所有文件都存储在同一个位置,通过暴力强制,您可以看到不属于您的文件,即

我希望我的用户能够上传一些文件,这是严格相关的他们。只有在资源对web服务进行身份验证时,资源才可见,文件附件也应该是

现在使用回形针,我可以指定文件的上载位置,甚至可以像这样混淆文件名:

has_attached_file :avatar, {
    :url => "/system/:hash.:extension",
    :hash_secret => "longSecretString"
}
但是,所有文件都存储在同一个位置,通过暴力强制,您可以看到不属于您的文件,即使不太可能


有什么方法可以保护文件不被不应该看到的人看到吗?

您应该能够配置回形针,将文件存储在应用程序/公共目录之外的某个位置,因此必须由应用程序获取并提供服务。如果必须由应用程序获取它们,那么您可以在此时应用所需的任何身份验证和授权


另一种方法是将上传的文件存储在数据库中,而不是文件系统中。这使得上传的文件与存储在数据库中的任何其他应用程序数据一样安全。

有关这些对象的对象/模型级授权,请查看ruby toolbox中的,以及以下问题:


如果您在使用回形针时遇到问题,可以查看ruby工具箱中的回形针或其他东西。Carrierwave支持文件系统上的存储、DB中的存储或DB管理的文件系统存储(如中的大对象支持,如果您使用postgres)。

文件是否存储在S3上?我想不是,应该非常有信心,因此:对于我们的目的,own server.Carrierwave似乎是一种更好的方法。我应该提到的是,我们已经使用Desive作为身份验证库,所以我们需要一种专用的文件服务方法与carrierwave相结合。非常感谢你!