同一个应用的不同子域能否防止XSS之类的恶意攻击?

Can different subdomains of the same app prevent malicious attack like XSS?

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

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

二:每个成员在这样的子域上都有自己的网站:member1.myapp.commember2.myapp.com , member3.myapp.com 等等...

假设user1.myapp.com运行他站点中的一个恶意js代码,可以members.myapp.com 会受到 XSS 或其他攻击的影响吗?

他们将能够设置 members.myapp.com 可以读取的 cookie - 因此,如果他们是 members.myapp.com 上的任何 cookie 处理漏洞,那么他们可能会利用这些漏洞。 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 并登录到他们的管理员级别帐户。但是,由于攻击者已在 members.myapp.com 可以读取的 cookie 中向攻击者提供了他们的会话 ID (123456)(因为它被设置为 myapp.com 级别),攻击者现在已登录作为管理员。也就是说,攻击者已经设法让管理员共享他的会话,因此当管理员登录时,共享他的会话的攻击者也已登录。

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