Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 防止在没有querystring令牌的情况下进行目录浏览和文件检索_Php - Fatal编程技术网

Php 防止在没有querystring令牌的情况下进行目录浏览和文件检索

Php 防止在没有querystring令牌的情况下进行目录浏览和文件检索,php,Php,我有一个付费下载包,我想把它放在我的一个Web服务器的深层文件夹中。我已经用选项-索引关闭了.htaccess中的目录浏览 但我还想通过要求Querystring上存在令牌来进一步锁定这些有价值的文件,然后服务器才会释放它们 这可能吗 它们是一种更好的免费且不需要密码的方法吗?如果直接链接到文件,例如zip或exe,则不可能使用任何querystring标记来保护文件 您需要做的是创建一个PHP脚本,从深层目录(最好是web根目录之外的目录)获取下载文件并将其流式传输给用户。这样,您就可以请求q

我有一个付费下载包,我想把它放在我的一个Web服务器的深层文件夹中。我已经用选项-索引关闭了.htaccess中的目录浏览

但我还想通过要求Querystring上存在令牌来进一步锁定这些有价值的文件,然后服务器才会释放它们

这可能吗


它们是一种更好的免费且不需要密码的方法吗?

如果直接链接到文件,例如zip或exe,则不可能使用任何querystring标记来保护文件

您需要做的是创建一个PHP脚本,从深层目录(最好是web根目录之外的目录)获取下载文件并将其流式传输给用户。这样,您就可以请求querystring令牌,并且只有在令牌匹配时才执行脚本。请注意,令牌基本上充当弱密码

此脚本将向您展示如何从Web服务器上的目录获取pdf。请求和验证查询字符串也应该很容易:


同样,您应该将受保护的文件存储在web根目录之外。否则,任何能够计算出直接路径的人都可以轻松地使用您的脚本并直接下载文件。

您可以检查查询令牌,并在匹配时重定向到文件:

<?php
  if(isset($_GET['token']) && $_GET['token'] == 42){
    header('Location: http://example.com/file.blah');
  }
  else{
    die('sorry!');
  }
?>
请注意,这确实是一个默默无闻的安全周。用户不需要花太多时间就能注意到重定向并直接点击文件

一个更好的解决方案需要您对文件进行流式处理…正如@Ciaran所描述的那样,感谢您将其发布得比我刚刚要发布的更好、更清晰


正如@Ciran所指出的,这也不是很安全。如果文件不是很敏感,那么在一段时间后让它过期就足够了。

解决方案需要使用PHP吗?