用户使用carrierwave gem 将私人文档上传到我的网站。默认情况下,carrierwave 根据数据库 ID 访问图像,这使得其他人很容易猜测他们不应该访问的文档的 url。
我想通过模糊它们的 URL 来使文档更安全,从而通过猜测 URL 来访问文档是不可能的。
请问我该怎么做?
用户使用carrierwave gem 将私人文档上传到我的网站。默认情况下,carrierwave 根据数据库 ID 访问图像,这使得其他人很容易猜测他们不应该访问的文档的 url。
我想通过模糊它们的 URL 来使文档更安全,从而通过猜测 URL 来访问文档是不可能的。
请问我该怎么做?
您可以在 CarrierWave 中使用UUID作为文件名的标识,由于UUID的性质和概念,这将使猜测文件名几乎是不可能的。
只需store_dir
在您的上传程序类中重新定义即可。
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{rand 500}_#{model.id}"
end
好吧,当然不要rand 500
在实际应用中使用。