通过 mime 阻止热链接请求

通过 mime 阻止热链接请求

我正在尝试阻止人们热链接到 PDF 和 DOC 文件。通常,我会使用如下 .htaccess 规则来解决这个问题:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/.*$ [NC]
RewriteRule \.(pdf|doc)$ /home/ [R=302,L]

但是,许多此类文件都是通过 php 脚本(如 filedownload.php?id=5)链接的,然后触发 PDF/DOC 文件的下载。有没有办法通过输出文件的 mime 阻止对这些文件的热链接?还有其他方法吗?

编辑-添加了此来源以显示如何调用文件:

header("Pragma: public"); 
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($fn)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fs);
echo $upload["file_contents"];
exit();

答案1

我认为您的重写规则不会知道文件的 mime 类型,因为在那个阶段不会执行任何响应代码。我认为在这种情况下最好的选择是在您的 php 代码中添加引荐来源检查,如果引荐来源不是来自您的域,则从那里重定向。

相关内容