我正在研究一种工具,最终将允许用户从网上购买和下载文件。我想知道如何安全/安全地托管可下载文件,以便未经授权的用户无需先购买即可下载文件。安全存储可下载文件
用户可以从网站上购买该文件,然后只要他们需要就可以访问可下载文件。
这是一个问题的两个部分:
- 我该如何去确保支付的文件不被未授权的人下载?和
- 我应该如何处理身份验证,如果用户检查可以下载付费文件?
对于第一个问题,我猜测我将文件存储在哈希目录名称中,以便猜测几乎不可能? 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编写的,如果这对该问题有任何影响。另外需要注意的是,网站上将提供免费和付费下载。
注:这个问题是类似于我问:Having Django serve downloadable files
我不使用Apache,但NGINX,上述仍然适用? –
另外,似乎像符号链接是一个有点哈克...有更多的“标准”的方法呢? –