如何阻止用户免费下载付费程序



我想用php建立电子商务网站,我将使用omnipay库进行支付。问题是,如果 url中的文件 www.mywebsite.com/programs/paint.exe用户可以在他的浏览器中写入该 url 和付费程序将下载.....我搜索了如何阻止用户下载像RewriteEngine这样的文件,但如果用户在这种情况下付费,我该如何让文件下载?

也许你可以试试这些:

  1. 以散列格式存储您的程序名称,因此与其www.mywebsite.com/programs/paint.exe,不如在这样www.mywebsite.com/programs/ca63ff966ff272da14e4fc2e73fcd399中更好。您至少已将付费程序存储在一个表中,并且该表应提供其哈希格式的名称列。
  2. www.mywebsite.com/programs/paint.exe此 URL 应该且只能由经过身份验证的用户访问。如果已经是经过身份验证的用户,请检查该用户的购买历史记录,如果他/她曾经购买过此paint.exe程序,如果没有他/她的购买记录,您必须将他/她重定向到您的付款页面。

除了像 Peter 提到的那样使用散列文件名之外,您还可以使用 php 在身份验证后提供文件。

创建 htaccess 重写以将对文件的任何请求直接发送到 php 脚本。在 php 脚本中,执行一些身份验证(即让用户登录,或让他们使用设置会话变量的安全链接等)。然后,如果用户身份验证成功,则使用 php 使用 http 标头返回文件。

header('Content-Type: application/x-msdownload'); // Set this to a .exe
header('Content-Disposition: attachment; filename="paint.exe"'); // Set the filename to download.
$downloadFile = file_get_contents('programs/hashedpaintexename.exe');
echo $downloadFile;

注意:您需要确保如果使用散列文件名,则希望您的htaccess也处理这些散列文件。

另一种选择是,如果你已经控制了服务器,你可以让PHP从网站目录之外加载文件,而不是使用htaccess重写。例如,如果您的网站目录是/var/www/mywebsite,让 php 从/whatever/path/you/want加载可执行文件,前提是 php 对该目录具有读取访问权限。

最新更新