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

med*_*zid 2 security xss same-origin-policy

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

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

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

假设user1.myapp.com在其站点运行恶意js代码,members.myapp.com是否会受到XSS或其他攻击的影响?

Sil*_*Fox 5

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

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

document.domain = 'myapp.com';
Run Code Online (Sandbox Code Playgroud)

除非members.myapp.com这样做,否则子域之间将不会共享Origin

cookie 处理漏洞示例

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

现在,假设攻击者访问members.myapp.com和被赋予一个随机会话cookie: set-cookie: session_id=123456

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

攻击者将一些 JavaScript 代码托管在user1.myapp.com

document.cookie = "session_id=123456;domain=myapp.com";
Run Code Online (Sandbox Code Playgroud)

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

管理员稍后会转到members.myapp.com并登录到他们的管理员级别帐户。然而,由于攻击者123456在 cookie 中提供了他们的会话 ID ( ),该 cookie 可以被members.myapp.com(因为它在myapp.com级别设置)读取,攻击者现在以管理员身份登录。即攻击者设法让管理员共享他的会话,所以当管理员登录时,共享他的会话的攻击者也登录了。

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