【问题标题】:How to get the real referer?如何获得真正的推荐人?
【发布时间】:2012-04-18 23:13:59
【问题描述】:

假设我想限制发布请求以便仅处理来自我自己域的请求,除了使用我阅读的 $_SERVER['HTTP_REFERER'] 之外,我如何检查引用者($_SERVER documentation ) 不可信?

【问题讨论】:

  • 在您自己的域中的页面上更新一个 cookie 并使用留下的页面的身份。在页面加载时检查 cookie 中的值。不过,也许您需要将其与当前会话联系起来。

标签: php user-agent referer


【解决方案1】:

不幸的是,这是不可能的,检查引荐来源网址的唯一方法是浏览器是否提供了此信息,显然,可以对其进行更改以使读者受益。

但是,您可以创建一个用户会话或 cookie 来保存一个变量以显示用户访问过该站点。然后,如果定义了该会话变量,您就可以只允许用户查看帖子。

另一种选择是根据用户的 IP 地址生成链接,并且只有在他们单击了专门生成的链接时才授予他们访问权限。您可以首先在数据库中保存用户 IP 地址和唯一键,然后您的所有内部链接都可以使用具有唯一 ID 的 GET 变量。如果页面在没有真实 ID 的情况下打开,则可能会显示错误消息。

【讨论】:

    【解决方案2】:

    如果它来自您自己的域,您可以设置 cookie 或使用会话变量将用户标记为在您的网站上。然后,如果发送了提交并且用户缺少该验证值,您知道您可以拒绝它(或者如果它存在则接受它)。

    【讨论】:

      【解决方案3】:

      除了Cameron's answer:
      您还可以使用阻止cross-site request forgeries 的相同机制。 IE。不仅要设置一个会话变量来指示用户访问过您的站点,还要向表单添加一个键,该键必须与会话数据中的值匹配。一些框架为此提供支持,例如Zend_Form_Element_Hash

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-15
        • 2011-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多