4

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

这个想法是,用户在付费后会获得一个下载链接,但要阻止他们在未付费的朋友中传播该 URL。

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

(我可以做PHP,而mySql这个帖子真的是针对方法的)

4

4 回答 4

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;
}
于 2013-08-21T11:29:11.540 回答
3

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

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

于 2013-08-21T11:23:02.333 回答
1

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

于 2013-08-21T14:22:24.913 回答
0

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

  • 将实际文件放在一个单独的文件夹中并在其中放置一个 .htaccess 以仅允许脚本访问该文件。

  • 然后生成一个随机唯一变量

  • 然后使用该名称制作一个临时文件并将其链接提供给客户端

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

于 2013-08-21T11:33:40.267 回答