【问题标题】:Third party code on subdomain子域上的第三方代码
【发布时间】:2016-12-15 23:22:51
【问题描述】:

作为 example.com 域的所有者,拥有许多内容,向第三方公司提供子域会带来哪些安全风险。我们不想共享任何内容,第三家公司将完全控制托管子域站点的应用程序和机器。

我主要关心的是:

  1. 共享 cookie

我们有 cookie .example.com,因此也会在对子域的请求中发送。我们是否可以将 A 记录指向反向代理,在此我们剥离 cookie 并将请求发送给没有它们的第三方提供商?

  1. 从主域加载内容

是否可以将 document.domain 设置为 example.com 并将 XMLHttpRequest 设置为 example.com?

  1. 跨站点脚本

我想这不会有问题,因为相同的原产地政策。子域是否被视为单独的域?

还有其他安全问题吗?

【问题讨论】:

  • 是的,子域不同,甚至只是端口号更改。 example.com:80 的页面无法向 example.com:8080 发出请求。

标签: cookies xmlhttprequest subdomain xss


【解决方案1】:

我们有 cookie .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 设置为相同的值 父域和子域。即使这样做也是必要的 只需将父域设置回其原始值即可。 否则可能会导致权限错误。


还有其他安全问题吗?

您需要注意 cookie 中毒。如果evil.example.com.example.com 设置了一个非host-only cookie,而您的域认为它已经设置了自己,那么恶意cookie 可能会被用于您的站点。

例如,如果您将 cookie 的内容显示为 HTML,那么这可能会引入XSS。另外,如果你使用double submit cookies CSRF prevention method一个邪恶的域也许可以设置自己的cookie值来实现CSRF。见this answer

【讨论】:

    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 2013-12-03
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2020-09-08
    • 2019-01-26
    相关资源
    最近更新 更多