【问题标题】:PHP File hostingPHP 文件托管
【发布时间】:2012-08-22 07:13:25
【问题描述】:

我的网站需要您的帮助http://usb-online.fr。这是一个 php 文件托管网站,这里是下载内容的一部分:

header("Content-Type: $mime; name=\"$fichier\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $taille");
header('Content-Description: Fichier hebergé par usb-online.fr');
header("Content-Disposition: attachment; filename=\"$fichier\"");
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');

ob_clean();
flush();
log_download($file,$infos['auteur'],$taille);
bunzip2($path);

如果你试试这个网址: http://usb-online.fr/file-download-822MjYzMg.html 你会看到一个下载框打开了,图像没有显示,这就是我想要的。 但是如果用户在网站上做<img src="http://usb-online.fr/file-download-822MjYzMg.html"/>,他可以显示图像并且我的服务器变得繁忙。我不想让这个,我该怎么办? http://usb-online.fr/file-download-822MjYzMg.html

【问题讨论】:

    标签: php image file hosting


    【解决方案1】:

    我不确定你能不能做你想做的事。如果您允许浏览器访问 URL,则无法控制它对远程数据的处理方式。

    【讨论】:

      【解决方案2】:

      您指的是所谓的“Hotlinking”,有几种方法可以禁用它。

      这里描述了哪种适用于您的情况; http://safalra.com/programming/php/prevent-hotlinking/ 否则在 Google 上可以找到很多。

      【讨论】:

      • 他们使用 $_SERVER['HTTP_REFERER']。我认为它不可靠。
      • 我不能像他们那样做,因为链接可以进入论坛或类似的东西,他们应该能够下载文件。所以我不能说:如果有推荐人不要显示文件。
      【解决方案3】:

      为您的会话添加一个随机数。使用该随机数作为您要保护的图像的 URL 的一部分。当您收到图片请求时,仅在提供用户的 nonce 时才回复。

      nonce 本质上是一些随机位,可以是数字,也可以是字符串。随机数通常用于防止 CSRF 攻击。在这种情况下,您创建一个新的随机随机数并将其存储在用户的会话中。让我们使用“asdfgh”作为这个例子的随机数。然后使用类似的东西

      <img src="yoururl.php?n=asdfgh">
      

      在 yoururl.php 中,检查请求中的 n 值是否与存储在用户会话中的 nonce 匹配。没有匹配,没有图像。

      【讨论】:

      • 很抱歉,我不是英语,也不太懂'nonce'。你能详细解释一下你的意思吗?
      • 我在答案中添加了随机数的解释。有帮助吗?
      • 查看他对 Gerald Versluis 的回答,他希望允许从外部站点链接到文件,因此没有会​​话。
      • 但他可以将用户重定向到“您的文件已准备好下载,单击此处开始”页面(ala download.com/hotfile.com/etc),他在此初始化会话并继续使用 Walrii 的建议。
      • 是的,似乎有必要像所有文件托管商一样创建一个中间页面“单击此处下载您的文件”。我想避免这一步,因为我的网站在所有步骤中都非常快(否则他是无用的,因为有许多其他网站做得更好)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2011-10-23
      • 2017-06-16
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多