如何隐藏$ _SERVER ['HTTP_REFERER']

时间:2010-11-10 12:13:00

标签: php

当用户通过我网站上的链接浏览其他网站时,如何隐藏$_SERVER['HTTP_REFERER']

3 个答案:

答案 0 :(得分:5)

您不能,您无法控制发送到其他网站的标头。标题从浏览器发送到正在导航的站点。这意味着你无法以任何方式操纵它们(没有MITM攻击)。

您可以通过中间代理将用户重定向到该网站,但该代理将成为新的引荐来源。 e.g。

Your Link -> Proxy -> End result

答案 1 :(得分:1)

通常不应该这样做,但不可能,至少在你描述的方式。由客户决定将请求标头中的内容发送给不同的服务器,而不是您。

我还应该指出,这与PHP无关。 PHP通过$ _SERVER ['HTTP_REFERRER']使您可以访问此标头变量,但您尝试解决的问题是避免客户端将引用URL发送到下一个服务器。

一些选项:

如果您的网站使用HTTPS,则不会发送。

如果您在站点上构建重定向器脚本并使用HTTP Refresh标头,则浏览器通常不会发送引用者,如果是,则只发送重定向器的URL 。例如:

http://www.yoursite.com/redir.php?url=http%3A%2F%2Fwww.google.com

<?php
    if (isset($_GET['url'])) {
        header("Refresh: 0; " . $_GET['url']);
    }
?>

现在,你必须小心这个小脚本。然后,任何人都可以使用您的网站进行重定向,就像它来自您。此外,使用此方法,任何人都可以向客户端注入他们想要的任何标头。这只是为了给你一个想法。最后,使用刷新标头违反了标准,不应该

最后,Google,Facebook,PayPal等都有重定向脚本。他们在URL上使用某种加密哈希来确定他们是否生成了重定向。如果您没有指定该哈希并只提供URL,则会在重定向之前提示用户。不友好。

看,最重要的是,没有理由去做你正在做的事情。如果您试图在网址中隐藏某些内容,那么您会遇到更大的问题。通过默默无闻的安全是坏事,mmkay?

答案 2 :(得分:0)

如果您在受控(内联网说)环境中工作,您可能会从修复浏览器配置中受益,请参阅例如。 http://cafe.elharo.com/privacy/privacy-tip-3-block-referer-headers-in-firefox/但这远非理想。