Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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_Folder Security - Fatal编程技术网

Php 如何保护文件夹,使用户无法从该文件夹下载媒体文件

Php 如何保护文件夹,使用户无法从该文件夹下载媒体文件,php,folder-security,Php,Folder Security,我正在用PHP开发一个在线视频销售网站。要下载特定的视频用户支付相应的金额,那么我提供一个下载视频的链接。我使用以下代码向用户提供下载链接 header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Conten

我正在用PHP开发一个在线视频销售网站。要下载特定的视频用户支付相应的金额,那么我提供一个下载视频的链接。我使用以下代码向用户提供下载链接

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;

我已将所有视频存储在特定文件夹中。如何阻止用户阻止用户,使他们无法查看该视频文件夹,也无法免费下载视频。或者无法抓取网站并下载所有内容。

将文件夹保留在服务器的DocumentRoot之外,以便只能通过脚本访问文件。

将文件夹保留在服务器的DocumentRoot之外,因此,只能通过您的脚本访问文件。

将用户购买的文件存储在数据库中,如果允许该用户下载该文件,则在下载脚本中运行检查,如果不重定向它们。

将用户购买的文件存储在数据库中,如果允许该用户下载该文件,则在下载脚本中运行检查,如果不重定向它们。

您可以使用htacess将包含媒体文件的文件夹设为禁止文件夹

RedirectMatch 403 ^.*/sub/folder/index\.php$
(或)


命令拒绝,允许
全盘否定

您可以使用htacess将包含媒体文件的文件夹设置为禁止文件夹

RedirectMatch 403 ^.*/sub/folder/index\.php$
(或)


命令拒绝,允许
全盘否定

最简单的解决方案:将视频放在Web服务器的docroot之外。
标题('Content-Type:application/octet-stream')-为您正在使用的视频格式使用正确的内容类型。最简单的解决方案:将视频放在Web服务器的docroot之外。
标题('content-type:application/octet stream')-为您正在使用的视频格式使用正确的内容类型。例如,我在videoupload文件夹中有五个文件,用户设法获取该列表的路径,如何防止用户无法获取路径,或者,即使他们设法以某种方式获得路径,但他们无法使用该路径直接下载文件,即www.xyz.com/videouploads/1.mp4。那么,当用户为文件/操作支付费用并订购时,您会为该实例生成一个唯一密钥(字符串/整数),将其存储在数据库中,然后将该密钥在url中传递到下载链接,然后在授予用户下载文件的权限之前,根据数据库检查它。因此,在所有header()调用之前进行检查,然后如果检查失败,将用户重定向到停止尝试窃取我的文件页面:例如,我的videoupload文件夹中有五个文件,用户以某种方式设法获取该列表的路径,我如何防止用户无法获取路径,或者,即使他们设法以某种方式获得路径,但他们无法使用该路径直接下载文件,即www.xyz.com/videouploads/1.mp4。那么,当用户为文件/操作支付费用并订购时,您会为该实例生成一个唯一密钥(字符串/整数),将其存储在数据库中,然后将该密钥在url中传递到下载链接,然后在授予用户下载文件的权限之前,根据数据库检查它。因此,在所有header()调用之前进行检查,然后如果检查失败,请将用户重定向到停止尝试窃取我的文件页面:Dcan您能给出DocumentRoot之外的位置的一些示例路径吗?(即,在文件夹www之外?
DocumentRoot
(或者如果您不使用Apache HTTP,则提供等效路径)是。您能给出DocumentRoot之外的位置的一些示例路径吗?(即)文件夹www之外?在
DocumentRoot
之外(如果您不使用Apache HTTP,则为等效路径)。