2012-04-18 73 views
0

假设我想限制发布请求以仅处理来自我自己的域的请求,我如何才能使用$ _SERVER ['HTTP_REFERER']来检查引用者,我读取的是($_SERVER documentation),可以不被信任?如何获得真正的引用者?

+0

来自您自己的域的页面会更新一个cookie,并留下页面的标识。在页面加载时检查cookie中的值。也许你需要将它与当前会话联系起来。 – 2012-04-18 15:07:28

回答

2

这是不可能的,不幸的是,检查引用链接的唯一方法是浏览器提供了这些信息,显然这些信息可以改变以使读者受益。

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

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

1

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

相关问题