2013-04-05 90 views
0

在php中,根据手册:“访问您的网站的访问者被分配一个唯一的ID,即所谓的会话ID,它存储在用户端的Cookie中或传播到网址“。通过url传播会话

什么时候和为什么我应该更喜欢通过网址而不是cookie传递会话?

+0

如果您担心用户不传输cookie – Victor 2013-04-05 07:33:59

回答

0

要回答这个问题,

Cookie可以被修改(UM啊黑客攻击),但会话不能。

+0

您的意思是通过url传递会话比cookie方式更安全吗? – depz123 2013-04-05 07:34:06

+0

这真的不代表什么。 Cookie是从服务角度的用户输入。当会话令牌通过cookie传递时,如果传递了错误的文本,则不会进行身份验证。正确地, – Raffaele 2013-04-05 07:36:44

+0

@ user1463541。 – 2013-04-05 07:41:00

1

主要区别在于您的会话令牌可能通过引用来源发送到不同的域,但可以通过检查来源IP地址来缓解这个问题。除此之外,Cookie以HTTP标头发送,URL在请求行中结束。关于安全性没有真正的区别,因为HTTPS对两者都进行了加密。但是请求URL可能写在一个日志文件中,这是一个(非常明显的)风险。

Cookie是传递会话令牌的默认处理程序,但在客户端禁用时,您可以回退到查询字符串中的参数。

+0

你最后一句话建议我应该通过** ** cookies和url在我的应用程序中实现会话,如果用户禁用cookies,则使用后一种方法作为备份。 – depz123 2013-04-05 07:39:14

+0

真的,我建议只使用cookies :)实现URL版本并不容易,你必须注意安全隐患,而且没有人真的禁用cookie(或JavaScript btw) – Raffaele 2013-04-05 07:47:24

0

会议在网址:

  1. 这是一个相当大量的工作在 的网址,通过会话ID携带。
  2. 解决由cookies导致的安全问题是一小部分工作。
  3. 它只是看起来丑陋有每个URL有饼干结束的session_id = foobar23454364634

会议:

  1. 这几乎是没有的工作量随身携带饼干SESSION_ID。
  2. 由于sessino cookies(XSRF)导致的安全问题,这是一项中等工作量。
  3. 网址未被修改。

您既可以选择自己的方式,也可以让用户选择。