PHP文件托管

PHP文件托管,php,image,file,hosting,Php,Image,File,Hosting,我的网站需要你的帮助。这是一个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-

我的网站需要你的帮助。这是一个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: 你会看到一个下载框是打开的,图像没有显示,这就是我想要的。 但是如果用户在网站中执行
,他就可以显示图像,我的服务器就会忙起来。我不想允许这样,我该怎么办?

您所指的是所谓的“热链接”,有几种方法可以禁用它


这里描述的是一种适用于你的情况;否则,在Google上会有很多内容。

在会话中添加一个nonce。将该nonce用作要保护的图像的URL的一部分。当您收到对映像的请求时,仅当提供了用户的nonce时才进行答复

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

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


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

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

他们使用$\u SERVER['HTTP\u REFERER']。我认为它不可靠。我不能像他们那样做,因为链接可以进入论坛或类似的东西,他们应该能够下载文件。所以我不能说:如果有推荐人,请不要显示文件。对不起,我不是英国人,也不太懂“nonce”。你能更详细地解释一下你的意思吗?我在答案中加了一个nonce的解释。这有帮助吗?看看他对Gerald Versluis的回答,他想允许从外部站点链接到该文件,因此没有会话。但他可以将用户重定向到“您的文件已准备好下载,请单击此处开始”页面(ala download.com/hotfile.com/etc)他初始化了一个会话并继续接受Walrii的建议。看起来有必要像所有文件宿主一样创建一个中间页面“单击此处下载您的文件”。我想避免这一步,因为我的网站在这里的所有步骤都非常快(否则他是无用的,因为有许多其他网站做同样的事情更好)。