如何获得真正的推荐人?

时间:2012-04-18 15:02:55

标签: php user-agent referer

假设我想限制帖子请求以便只处理来自我自己的域名的帖子请求,除了使用我读过的$ _SERVER ['HTTP_REFERER']之外,我怎样才能检查引用者({{3 }})不可信任?

3 个答案:

答案 0 :(得分:2)

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

但是,您可以创建一个用户会话或cookie来保存变量以显示用户已访问过该站点。然后,只有在定义了会话变量的情况下,才允许用户查看帖子。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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