我需要一种方法来保护文件的下载URL不被下载程序看到。
我们的想法是,用户在付款后会获得一个下载链接,但是要阻止他们在没有付款的朋友中传播网址。
对此有哪些常见解决方案?可能更改文件名?
(我可以做PHP,mySql这篇文章真的是针对方法的)
答案 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作业来删除不必要的创建文件。