可以使用JavaScript+;饼干?

可以使用JavaScript+;饼干?,javascript,security,http,authentication,Javascript,Security,Http,Authentication,假设您有一个webapp,它在子域(例如:awesome.super cms.com)上为用户提供自己的站点,并且您允许他们编辑HTML。进一步假设您正在通配符子域cookie(“*.super cms.com”)中设置SessionID 管理evil.super cms.com的用户可以轻松编写一个JavaScript,从其他super-cms.com用户那里获取会话ID: var session = $.cookie('SessionID'); // Now send `session` t

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

管理
evil.super cms.com
的用户可以轻松编写一个JavaScript,从其他super-cms.com用户那里获取会话ID:

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

我的问题是:攻击者是否可以使用这些获取的会话ID做坏事?例如,作为另一个用户进行欺骗身份验证?

是的,他们可以。这家伙似乎有一篇文章概述了一些例子:


您可以设置cookie的域以防止出现这种情况。设置为
;域=…
在cookie中,您的给定语言可能有一个直接执行此操作的工具。

是的,它们可以。这家伙似乎有一篇文章概述了一些例子:

您可以设置cookie的域以防止出现这种情况。设置为
;域=…
在cookie中,您的给定语言可能有一个直接执行此操作的工具

攻击者是否可以使用这些获取的会话ID来做坏事

是的,但要防止这种情况,这是不需要动脑筋的:

  • 不要使用通配符cookie
  • 在任何cookie上设置http only标志
我假设您是在SSL上运行它(否则它已经对MITM攻击非常开放),在这种情况下,设置SSL only标志也是一个好主意

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

C

攻击者是否可以使用这些获取的会话ID来做坏事

是的,但要防止这种情况,这是不需要动脑筋的:

  • 不要使用通配符cookie
  • 在任何cookie上设置http only标志
我假设您是在SSL上运行它(否则它已经对MITM攻击非常开放),在这种情况下,设置SSL only标志也是一个好主意

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


C.

谢谢。我们使用的是Django,它允许您设置一个会话\u COOKIE\u域来执行此操作。然而,这是一个不幸的情况,因为我们真的希望让用户跨子域进行身份验证。凯尔:您仍然可以跨域进行身份验证,但只需再做一点工作(确保指向其他域的所有链接都包含一个特殊的查询字符串,然后适当地验证它)(这比这个更复杂,但这是一般的想法,或者至少是类似的东西))。你不希望他们访问彼此的COOKIE。谢谢。我们正在使用Django,它允许你设置一个会话\u COOKIE\u域来执行此操作。然而,这是一个不幸的情况,因为我们真的希望让用户在子域之间进行身份验证。凯尔:你仍然可以跨域进行身份验证,但只需稍微增加一点重新工作(确保指向其他域的所有链接都包含一个特殊的查询字符串,然后进行适当的验证(这比这个更复杂,但这是一般的想法,或者至少是类似的)。你不想要的是,他们互相访问cookie。