2

我需要您对我的网站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);

如果你试试这个 url: 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

4

3 回答 3

1

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

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

于 2012-08-22T07:17:02.647 回答
1

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

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

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

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

于 2012-08-22T07:19:40.027 回答
1

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

于 2012-08-22T07:56:40.583 回答