安全存储可下载文件

| 我正在开发一种工具,该工具最终将允许用户从Web购买和下载文件。我想知道如何安全/安全地托管可下载文件,以便未经授权的用户无法在未先购买文件的情况下下载文件。 用户可以从网站上购买文件,然后只要需要就可以访问可下载文件。 这是一个两部分的问题: 如何确保未授权人员未下载付费文件? 我应该如何处理身份验证以检查用户是否可以下载付费文件? 对于第一个问题,我想我将文件存储在哈希目录名称中,这样就几乎不可能猜到? 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编写,如果与该问题有关。另一个要注意的是,该网站上将提供免费和付费下载。 注意:此问题与我要问的问题类似:让Django提供可下载文件     
已邀请:
        如果... 1)将文件存储在Apache不能直接访问的目录中。 2)在您的“购买文件”视图中,创建一个用户特定的符号链接(使用哈希值),该符号链接指向实际文件并重定向以允许Apache通过符号链接为文件提供服务 3)运行cron作业,在创建x个小时后删除符号链接。     

要回复问题请先登录注册