通过GET方法而不是HTTP_REFERER传输上一页位置更安全吗?

时间:2009-12-03 16:19:41

标签: php

我想存储用户来自的网页位置(在我的网站上)。我想为此示例执行此操作:说有人在未登录的情况下发送了评论。"process_comment.php"将处理它并发送header(location:$_GET['prev_page']);当然我会在发送之前过滤$ _GET。

我应该使用会话吗?

谢谢!

5 个答案:

答案 0 :(得分:3)

实际上完全一样。这两种方法都暗示信息是在HTTP查询中传递的,可以很容易地伪造。所以你不能真正相信一种方法而不是另一种方法。

话虽如此,只要您不依赖于那些非常重要的信息,您就可以承认引用可以信任,因为伪造比查询字符串参数更复杂一些。至少对普通用户而言。

如果您需要信任某些重要信息,那么最好的解决方案就是将其作为会话变量存储在服务器上。在检查了以前的值之后,每个页面都会存储其URL。

答案 1 :(得分:2)

如果您使用$_SESSION,如果用户打开多个窗口/标签并同时执行不同的操作,则会出现问题。没有什么比只能拥有一个网站窗口更烦人了。

您可以将值存储在SESSION变量中,并通过短键识别它。该密钥进入GET字符串。这样,您可以保持URL清洁,并且不会冒许多服务器对GET参数的限制。

答案 2 :(得分:0)

嗯,HTTP_REFERER可以被某些客户端剥离。我似乎记得有些诺顿网络安全产品就是这样做的,其他人也可能会这样做。因此,在会话中设置上一页并将其用于重定向会更加可靠。

答案 3 :(得分:0)

如果您可以使用它,会话是一个更安全的选择。从GET或甚至标题发回用户将允许狡猾的人可能滥用代码中的任何缺陷,从而可能做出令人讨厌的事情。

某些防火墙软件也可能删除标题本身。

答案 4 :(得分:0)

我不认为在这种情况下使用GET存在问题。您无法始终依赖于能够从浏览器中检索引荐来源。