Django 安全存储可下载文件
我正在开发一种工具,它最终将允许用户从网上购买和下载文件。我想知道如何安全地托管可下载文件,以便未经授权的用户在未购买文件之前无法下载文件 用户可以从网站上购买文件,然后根据需要随时访问可下载的文件 这是一个由两部分组成的问题:Django 安全存储可下载文件,django,file,file-upload,data-storage,Django,File,File Upload,Data Storage,我正在开发一种工具,它最终将允许用户从网上购买和下载文件。我想知道如何安全地托管可下载文件,以便未经授权的用户在未购买文件之前无法下载文件 用户可以从网站上购买文件,然后根据需要随时访问可下载的文件 这是一个由两部分组成的问题: 我如何确保付费文件不会被未经授权的人下载 我应该如何处理身份验证以检查用户是否可以下载付费文件 对于第一个问题,我猜测我将文件存储在一个哈希目录名中,这样猜测几乎不可能?S3服务器在这里是一个好的解决方案吗?在这方面,我需要注意哪些问题 对于第二个问题,我猜我可以在数据
purchases table
-> id
-> hash (unique purchase identifier)
-> user (foreign key)
-> file (foreign key)
-> ...other stuff here like timestamp, etc...
。。。然后使用应用程序检查用户是否进行了购买,因此下载的URL为:
http://www.example.com/something/download/sd9f7u23ihosd8087603/
…然后将搜索具有哈希值sd9f7u23ihosd8087603的记录,并确保该记录存在并且与当前用户关联。然后从那里,将它们指向文件系统上的文件
这是个好办法吗?有更好的解决方案吗?我肯定我在这里遗漏了细节
应用程序是用Django编写的,如果这与问题有关的话。另一个注意事项是,该网站将提供免费和付费下载 注意:这个问题与我的问题类似:如果 1) 将文件存储在Apache无法直接访问的目录中 2) 在“购买文件”视图中,创建一个特定于用户的符号链接(使用哈希),该符号链接指向实际文件,并重定向以允许Apache通过符号链接为文件提供服务
3) 运行一个cron作业,在创建x小时后删除符号链接。我不使用Apache,但使用NGINX,上面的方法是否仍然适用?而且,符号链接似乎有点不太成熟。。。有没有更“标准”的方法?