PHP保护下载

时间:2013-08-21 11:20:05

标签: php file

我需要一种方法来保护文件的下载URL不被下载程序看到。

我们的想法是,用户在付款后会获得一个下载链接,但是要阻止他们在没有付款的朋友中传播网址。

对此有哪些常见解决方案?可能更改文件名?

(我可以做PHP,mySql这篇文章真的是针对方法的)

4 个答案:

答案 0 :(得分:4)

如果用户在您的网站上拥有一个帐户,则在他们付费下载的情况下在您的数据库中存入。然后给他们一个链接,例如download.php,在那里验证他们是否支付,如果是,则为文件做一个位置。 .pdf的示例:

if($userpaid === true) {
  $filename = 'congrat-you-paid-it.pdf'; //Name to display
  $file = './download/pdf/secretlink.pdf';      
  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="'.$filename.'"');
  header('Content-Length: ' . filesize($file));
  @readfile($file);
  exit;
}

答案 1 :(得分:3)

一种解决方案可能是使用SESSION或类似的临时存储,并在运行时生成下载URL。因此,再次单击该URL可能无效。

此外,不应允许直接访问文件。

答案 2 :(得分:1)

创建令牌。存储在您的最后,并发送文件URL。当用户单击URL匹配令牌并允许下载时,请从存储中删除令牌。 每次注册用户想要下载时,您都要生成新令牌。

答案 3 :(得分:0)

使用会话快速简便,为了更好的安全性,您可以做的是:

  • 将实际文件放在单独的文件夹中,并将.htaccess放入其中 只允许脚本访问该文件。

  • 然后生成随机唯一变量

  • 然后创建一个具有该名称的临时文件,并将其链接提供给 客户端

  • 最后运行一个cron作业来删除不必要的创建文件。