可选的基于URL的授权,以避免登录cookie

时间:2012-06-26 08:25:25

标签: php security url authentication cookies

基本上,我想要的是使用登录cookie的替代方法,因为技术上可以猜测(有办法解决这个问题,但为什么不完全消除威胁)?

我正在考虑的是一个系统,其中不要在公共计算机上使用警告,允许用户不使用cookie自动登录,而是通过遵循 /login/email@example.com/myPassword 即可。

我想问的是,我是否应该费心去创建这样一个系统,还是会造成更多的安全漏洞?一方面,基于cookie的一个可以再次简单地请求密码,例如,如果IP或用户代理不匹配,另一方面,我可以节省相当多的数据库空间不必存储cookie名称。

2 个答案:

答案 0 :(得分:4)

通过您的方法,用户的密码现在公开:在他们的浏览器历史记录中,在您的服务器日志中,到任何网络嗅探工具等等。用户的密码不应该在URL中。所以不,这不是一个好主意。

答案 1 :(得分:2)

我同意Simeon,但只是想指出一些额外的事情:

  • Cookie 可能被劫持,你是对的,但像SSL这样的事情可以很好地防止这种情况发生。
  • 如果你使用的是SSL,那么这两种方法(你的和cookie)都会被窃听者隐藏起来。
  • 正如Simeon指出的那样,请求的URL恰好存储在比cookie更多的地方,更有可能造成意外妥协或故意损害。
  • 然而,更重要的是,Cookie只是随机生成的字符串,特定于您的网站和您的网站,而明文密码则更有价值。您站点的明文密码可能与数百个其他站点使用的密码相同。换句话说,受损的cookie对一个站点的影响最大。另一方面,密码泄露可能会产生更广泛的影响。
  • 因为您注意到猜测,所以PHP会话ID比典型密码长得多。 PHP通常会生成27到40个字符的会话ID,是普通密码大小的4倍。此外,密码通常可以通过诸如(修改的)字典攻击之类的东西找到,只需要在整个搜索空间上进行暴力搜索所花费的时间的一小部分。换句话说,如果您担心cookie的安全性,增加长度并包含服务器端逻辑以仅接受cookie,那么猜测明文密码很多比猜测cookie的内容更容易来自同一/ 24地址空间的客户。如果您仍然担心,请强制用户更频繁地重新进行身份验证。