我需要一种方法来保护文件的下载 URL 不被下载者看到。
这个想法是,用户在付费后会获得一个下载链接,但要阻止他们在未付费的朋友中传播该 URL。
有哪些常见的解决方案?可能更改文件名?
(我可以做PHP,而mySql这个帖子真的是针对方法的)
如果用户在您的网站上有帐户,如果他们支付了下载费用,请在您的数据库中存货。然后给他们一个链接,例如 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;
}
一种解决方案可能是使用SESSION
或类似的临时存储并在运行时生成下载 URL。因此,再次单击 URL 可能不起作用。
此外,不应允许直接访问文件。
创建一个令牌。存储在您的最后并与文件 URL 一起发送。当用户单击 URL 匹配令牌并允许下载时,然后从您的存储中删除令牌。不过,每次注册用户想要下载时,您都必须生成新令牌。
使用会话快速简便,为了更好的安全性,您可以做的是:
将实际文件放在一个单独的文件夹中并在其中放置一个 .htaccess 以仅允许脚本访问该文件。
然后生成一个随机唯一变量
然后使用该名称制作一个临时文件并将其链接提供给客户端
最后运行一个 cron 作业来删除不必要的创建文件。