Ruby on rails RubyonRails中的文件存储库
我想在RubyonRails中创建一个简单的文件存储库。用户拥有自己的帐户,登录后可以上传文件或下载以前上传的文件 这里的问题是安全问题。文件应该是安全的,除了所有者之外,任何人都不能使用Ruby on rails RubyonRails中的文件存储库,ruby-on-rails,ruby,file,repository,Ruby On Rails,Ruby,File,Repository,我想在RubyonRails中创建一个简单的文件存储库。用户拥有自己的帐户,登录后可以上传文件或下载以前上传的文件 这里的问题是安全问题。文件应该是安全的,除了所有者之外,任何人都不能使用 我应该将文件存储在哪里、哪个文件夹中,以使其尽可能安全 重命名上传的文件、将名称存储在数据库中并在需要时恢复它们,这有意义吗?这可能有助于避免名称冲突,尽管我不确定这是否是个好主意 文件应该全部存储在一个文件夹中,还是应该进行一些划分 对于简单的情况(您不想分发文件存储): 将文件存储在tmp目录中。不要将它
tmp
目录中。不要将它们存储在public
中。然后仅通过执行身份验证/授权检查的路由和控制器公开这些文件这是一个有趣的问题。根据您要应用的安全级别,我建议如下:
根据您想要达到的安全级别,您可以应用越来越多的模式。只是不要将文件保存在公用文件夹中,而是创建一个将发送文件的控制器 从那时起,你想如何组织是你的选择。您可以为每个用户创建一个子文件夹。从安全角度来看,不需要重命名,但一定要尝试清除文件名、空格和非ascii字符,这会使事情变得更困难。
- 重命名这些文件,原因之一是,您无法知道今天的文件“test”是否应该替换上周的“test”(可能用户将它们放在不同的目录中)
- 为每个用户提供自己的目录,这样可以防止性能问题,并便于迁移、归档或删除单个用户
- 将元数据放入数据库,将文件放入文件系统
- 注意通过文件名进行代码注入
tmp
。我会创建一个单独的分区,最好安装在一个单独的驱动器上,这样可以方便地进行扩展<代码>tmp用于临时存储。