作为域example.com的所有者,许多内容向第三方公司提供子域名所带来的安全风险。我们不想共享任何内容,第三家公司可以完全控制托管子域网站的应用程序和计算机。
我主要关注的是:
我们有cookies .example.com,因此也会在请求中发送到子域名。我们是否有可能将A记录指向反向代理,我们剥离cookie并将请求发送给没有它们的第三方提供商?
是否可以将document.domain设置为example.com并对example.com执行XMLHttpRequest?
我想由于相同的原始政策,这不会有问题。子域被视为单独的域?
还有其他安全问题吗?
答案 0 :(得分:1)
我们有cookies .example.com,因此也会发送 请求子域名。我们是否有可能将A记录指向 我们剥离cookie并将请求发送到第三方的反向代理 没有他们的派对提供者?
好主意,你可以这样做,但是你还需要设置HttpOnly标志,否则他们就能用JavaScript检索它们。
是否可以将document.domain设置为example.com并执行 XMLHttpRequest到example.com?
不,Ajax的子域被视为不同的Origin。请参阅this answer。
我想由于相同的原始政策,这不会有问题。 子域被视为单独的域?
JavaScript代码可以与其他子域互动 - 但只能与您的网站合作。您还需要设置document.domain = 'example.com';
如果您不这样做,您就可以抵御此威胁。
请参阅here:
使用document.domain允许子域访问其父域时 安全地,您需要将document.domain设置为两者中的相同值 父域和子域。即使这样做,这也是必要的 所以只需将父域设置回其原始值即可。 如果不这样做,可能会导致权限错误。
还有其他安全问题吗?
你需要注意饼干中毒。如果evil.example.com
在.example.com
设置了您的域认为自己设置的非host-only Cookie,那么恶意Cookie可能会用于您的网站。
例如,如果您将Cookie的内容显示为HTML,则可能会引入XSS。此外,如果您正在使用double submit cookies CSRF prevention method恶意域名,则可以设置自己的Cookie值以实现CSRF。请参阅this answer。