我看了http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html
登录网站,复制必备 cookie值,然后将其粘贴到 另一个浏览器在另一个浏 电脑。这就是全部。它的 非常开眼界。
我的问题是,如果我们使用php / aspnet会话,这种方法是否也有效。
如果确实有效,我们可以采用哪些技术(如Web开发人员)来阻止此技巧的发挥。基本上我不希望用户只能通过粘贴cookie来登录他的帐户,密码是必须的。
如果无法实现上述目标,是否意味着即使是Gmail等谷歌产品,我也可以通过某种方式登录我的帐户而无需我的密码?
答案 0 :(得分:5)
会话是会话 - 通过在cookie中存储ID令牌来完成。你不能阻止在浏览器之间手动复制cookie。
您可以尝试在登录时记录原始用户代理字符串,并进行每次比较(如果他们使用Firefox登录,并突然使用Opera,hmmMmMmmmmmm)。对于IP地址也是如此......但IP地址对于移动用户和人们恐惧多宿主代理服务器系统是有问题的,例如大多数AOL等。他们的IP可能会因每个请求而改变。
没有万无一失的防止cookie共享无法绕过的方法(更改浏览器的UA,因此他们声称是单一类型/版本),或产生误报(由于代理而导致的IP更改)。
答案 1 :(得分:2)
嗯,作为可以通过HTTP成功捕获任何cookie的软件的创建者,如果您需要安全性,可以提供一些提示:
- 尽可能使用HTTPS以防止OTHERS首先捕获该cookie。
你的问题的答案:没有一个具体的方法。你可以使它变得更难,这也会使你的工作(和你的服务器)变得更难。
- 在服务器端短时间内浏览cookie,因此即使用户复制粘贴cookie,它也不会是有效的。
- 也使用cookie保存一些元数据,例如远程IP和用户代理字符串或其他一些标题。
这些是您可以使用的最佳和最直接的提示,但请记住,有经验的用户可以克服大多数这些问题。只是不要将安全性留给客户端,在服务器端完成它作为黄金法则。
答案 2 :(得分:0)
我不能确定它是否是php / asp.net会话的问题。可以阻止的一种方法是向cookie添加IP验证,如果它是从不同于它的IP发送的,则将其抛入登录。