同一个应用程序的不同子域可以防止像XSS这样的恶意攻击吗?

时间:2015-03-04 22:41:35

标签: security xss same-origin-policy

在我的Rails应用程序中,我有2个子域名,

一个: members.myapp.com 这是所有成员之间共享的区域(他们可以登录和管理他们的帐户)

两个:每个成员在子域上都有自己的网站,如下所示: member1.myapp.com member2.myapp.com member3.myapp。 com 等...

让我们想象 user1.myapp.com 在其网站中运行恶意js代码, members.myapp.com 可以通过XSS或其他方式受到影响攻击?

1 个答案:

答案 0 :(得分:3)

他们可以设置members.myapp.com可以读取的cookie - 所以如果他们是members.myapp.com处理漏洞的任何coookie,那么他们可能会利用这些。 cookie中毒的一个例子可能是session fixation

除非两个域都选择加入,否则XSS是不可能的。即它们都必须包含以下代码。

document.domain = 'myapp.com';

除非members.myapp.com执行此操作,否则不会在子域之间共享Origin

Cookie处理漏洞示例

如上所述,一种类型是Session Fixation

现在,请说攻击者访问members.myapp.com并获得一个随机会话cookie:set-cookie: session_id=123456

然后,攻击者会向管理员发送一封电子邮件,说明他的域user1.myapp.com存在问题。

攻击者在user1.myapp.com上托管了一些JavaScript代码:

document.cookie = "session_id=123456;domain=myapp.com";

受害者(myapp.com的管理员)进入攻击者的页面并收到cookie。

管理员稍后转到members.myapp.com并将日志转到其管理员级帐户。但是,由于攻击者已将攻击者的会话ID(123456)提供给可由members.myapp.com读取的cookie(因为它设置为myapp.com级别),攻击者现在已经记录在管理员。即攻击者已设法让管理员共享其会话,因此当管理员登录时,共享其会话的攻击者也会登录。

这只是Cookie处理漏洞的一个示例。在这种情况下,系统应在登录后发出新的会话cookie,以防止会话固定攻击。