Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保护数字商品目录的最佳方法是什么,这样它就只能通过PHP脚本访问?_Php_Permissions_Download_Password Protection - Fatal编程技术网

保护数字商品目录的最佳方法是什么,这样它就只能通过PHP脚本访问?

保护数字商品目录的最佳方法是什么,这样它就只能通过PHP脚本访问?,php,permissions,download,password-protection,Php,Permissions,Download,Password Protection,我的网站与PayPal Digital Goods API交互,完成后,该API重定向回我的PHP脚本,然后允许下载 我想知道保护包含数字商品的目录的最佳方法,该目录位于web根目录之外 目前,我正在通过删除所有权限来保护目录。调用下载脚本时,将更改包含数字商品的目录的权限以允许下载,然后再次删除。下面是脚本中发生的事情的速记版本 我肯定这不是正确的方法。您是否可以在用户不必输入用户和密码的情况下使用htaccess?任何指点都将不胜感激 确保文件不会直接送达。在Apache中,您会将它们排除在

我的网站与PayPal Digital Goods API交互,完成后,该API重定向回我的PHP脚本,然后允许下载

我想知道保护包含数字商品的目录的最佳方法,该目录位于web根目录之外

目前,我正在通过删除所有权限来保护目录。调用下载脚本时,将更改包含数字商品的目录的权限以允许下载,然后再次删除。下面是脚本中发生的事情的速记版本


我肯定这不是正确的方法。您是否可以在用户不必输入用户和密码的情况下使用htaccess?任何指点都将不胜感激

确保文件不会直接送达。在Apache中,您会将它们排除在外


然后,权限应该无关紧要,因为根本没有URL映射到它们。

将数字商品存储在DocumentRoot之上,然后通过PHP脚本为每个购买者提供唯一的哈希

(工业工程)

DocumentRoot:/home/user/public\u html/store

受保护的文件夹/主页/用户/商品

使用PHP时: Readfile()请参阅

然后用这样的东西来提供文件:

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('/home/user/goods/original.pdf');
?>

这听起来相当不必要-您应该制定一个权限集,该权限集始终允许您访问文件,但不允许其他人访问。你想防范什么样的攻击?这是在什么样的web服务器上运行的?你是和别人分享,还是自己分享?在99%的情况下,在网络之外根目录应该足够了。我想我知道我做错了什么。我之前在apache httpd.conf中设置了一个别名,该别名链接到我的digital goods目录,我设置它使链接到脚本中的目录更简单,但它也使digital goods目录在url中可用。
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('/home/user/goods/original.pdf');
?>