可以使用JavaScript + Cookies欺骗会话吗?

时间:2010-01-12 04:54:56

标签: javascript security http authentication

假设您有一个webapp,它为用户在子域(例如:awesome.super-cms.com)上提供了自己的站点,并允许他们编辑HTML。进一步假设您在通配符子域cookie(“*.super-cms.com”)中设置SessionID。

管理evil.super-cms.com的用户可以轻松编写从其他super-cms.com用户那里获取SessionID的JavaScript:

var session = $.cookie('SessionID');
// Now send `session` to evil.com

我的问题是:攻击者可以使用这些收集的SessionID来做坏事吗?例如,欺骗身份验证是否是另一个用户?

2 个答案:

答案 0 :(得分:4)

是的,他们可以。这家伙似乎有一篇文章概述了例子:http://skeptikal.org/2009/11/cross-subdomain-cookie-attacks.html

您可以设置Cookie的域名以防止这种情况发生。它在cookie中设置为;domain=...,您的给定语言可能会直接执行此操作。

答案 1 :(得分:0)

  

攻击者可以使用这些收获的SessionID来做坏事吗?

是的,但这是一个很容易阻止的事情:

  • 不要使用通配符
  • 在任何Cookie上设置http only标志

我认为你是在SSL之上运行它(否则它已经对MITM攻击已经开放),在这种情况下,设置仅SSL标志也是一个好主意。

请注意,您不能依赖客户端IP地址不会更改(某些ISP使用负载平衡代理)会话,但浏览器标头不会更改 - 但这不会有助于某人的攻击知道他们在做什么。

下进行。