我有一个网页(“research.php”),其中包含指向 PDF 文件的链接,并希望在任何人看到这些文件之前显示免责声明(“disclaimer.html”)。目前,我通过检查 HTTP_Referrer 的值并重定向(如果它不是来自免责声明页面)来完成此操作。
代码:
$ref = $_SERVER['HTTP_REFERER'];
if($ref !== 'http://my.site.com/disclaimer.html') {
die('<META HTTP-EQUIV="Refresh" CONTENT="0;URL=disclaimer.html">');}
研究页面包含指向 PDF 文件的链接,这些文件保存在单独的目录中,该目录仅限使用 .htaccess 进行本地访问。PDF 由一个 PHP 脚本(“download.php”)提供,该脚本也检查 HTTP_Referrer。
我知道 HTTP_Referrer 变量可以被欺骗,使这种方法不安全,并且有几个问题:
首先,是否有人可以直接从不同的网站链接到研究页面或下载脚本并欺骗 HTTP_Referrer,以便他们的访问者能够绕过免责声明?基于一个不同的问题,我的理解是 HTTP_Referrer 很容易在个人的 PC 上被欺骗,但对于网站访问者来说更难做到这一点?
其次,有没有办法让 download.php 脚本更安全,例如将它放在使用 .htaccess 限制本地访问的目录中?我目前正在使用“a href="download.php?..." 形式的简单链接调用脚本,所以我的理解是这不起作用 - 对吗?
任何意见表示赞赏。最重要的是,我希望在不显示免责声明或该网站所有者实际将 PDF 存储在其网站上的情况下,很难/不可能从另一个网站链接到页面或文件。毫无疑问,任何解决方案都会有某些漏洞,但我想了解的是,对于有经验的网页设计师来说,绕过免责声明页面是多么棘手。
更新:jszobody 下面的回复清楚地概述了这样做的更好方法,因此回答了这个问题 - 但如果有人可以简单地解释一下,我仍然想知道从 3rd 方网站上的链接欺骗 HTTP_REFERRER 涉及多少工作.