【问题标题】:Php referrer works or not?PHP 推荐人是否有效?
【发布时间】:2010-06-09 16:45:39
【问题描述】:

我需要知道我网站上某个页面的引用服务器。

是否有任何安全的方法来检查用户从何处“来到”页面?

我尝试将其上传到我的服务器,但是当我将地址写入浏览器地址栏中的文件时,这根本不会输出任何内容:

    <?php echo $_SERVER['HTTP_REFERER']; ?>

我需要检查这个才能在页面上显示链接...

谢谢

【问题讨论】:

    标签: php javascript html security apache


    【解决方案1】:

    是否有任何安全的方法来检查用户从何处“来到”页面?

    不是真的。像所有 HTTP 标头一样,这可以很容易地修改。此外,浏览器还可以选择从不发送推荐人。

    $_SERVER['HTTP_REFERER']; 将在浏览器确实发送引荐来源网址时工作,但无法验证它是否真实。

    我尝试将其上传到我的服务器,但是当我将地址写入浏览器地址栏中的文件时,这根本不会输出任何内容

    在这种情况下,浏览器不会发送推荐人,因为您不是来自任何地方。

    【讨论】:

      【解决方案2】:

      尝试使用$_SERVER['HTTP_REFERER']。请注意,它是“HTTP_REFERER”,而不是人们所期望的“HTTP_REFERRER”

      另外,请注意此变量上的documentation

      页面的地址(如果有) 将用户代理引用到当前 页。这是由用户代理设置的。 不是所有的用户代理都会设置这个,并且 有些提供修改的能力 HTTP_REFERER 作为一个特性。简而言之, 它不能真正被信任。

      此外,ceejayoz 正确地指出,如果您直接进入一个页面而不点击那里的链接,大多数浏览器不会设置引荐来源网址。

      【讨论】:

      • :( 你忍了我!>.> <.>
      【解决方案3】:

      两件事:

      应该是$_SERVER['HTTP_REFERER'](注意第一单R)。不朽的错字案例,但这就是它的外观。 :)

      其次,仅当您通过单击链接到达该页面时才会发送 http-referer。在地址栏中输入链接可以绕过它。

      但要回答您的实际问题,有几个人设置了浏览器,因此从未发送过引用者,这意味着遗憾的是,没有可靠的方法来确定链接。 (更不用说数据可以被篡改,因为它是由客户端发送的。)

      【讨论】:

        【解决方案4】:

        我尝试将其上传到我的服务器,但是当我将地址写入浏览器地址栏中的文件时,这根本不会输出任何内容:

        那是因为在那种情况下没有引荐来源网址 - 你在浏览器地址栏中输入了它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-30
          • 2011-11-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多