防止子域上的不安全 webapp 危及主 webapp 的安全性

信息安全 Web应用程序 饼干 网页浏览器
2021-09-09 21:32:40

我希望您能帮助我获得关于我模糊记得的一种漏洞的更具体信息。

我隐约记得一年前听说,如果您在子域上设置了一个 webapp,并且该 webapp 被入侵,那么您的主 webapp(在根域上)也可能被入侵,因为(这是模糊的部分在我的记忆中)浏览器对两个不同的 webapps 是同一个实体有一些假设,因为它们来自同一个根域。

我听说这就是为什么 Facebook 最初将他们的开发者论坛托管在不同的域而不是 facebook.com 的子域;因为论坛应用程序对安全问题的审计没有 Facebook 本身那么广泛,而且他们不希望论坛中的任何安全漏洞允许攻击者访问 Facebook 本身。

(澄清一下,这些攻击是基于浏览器的,而不是基于两台服务器之间的某种连接。)

我的问题:您是否详细说明了这些漏洞是什么以及我可以如何防范它们,所以我确信访问一个 web 应用程序的攻击者无法访问同一根域上的另一个 web 应用程序?

4个回答

这听起来像是一个不安全的 cookie 范围如果应用程序将其 cookie 范围限定.domain.com为子域中的 XSS 可能会导致帐户泄露。

只要应用程序位于不同的服务器上,它们就不会共享相同的数据库帐户,并且 cookie 的范围是正确的,因此不必担心。

目的是确保一个 webapp 中的 XSS 漏洞不会让另一个 webapp 受到危害。

如果您在两个不同的域上运行它们(例如,facebook.comand facebookdevelopers.com; not facebook.com and developers.facebook.com),那么浏览器同源策略会在两个 webapps 之间提供隔离。

此处已在其他几个问题中详细讨论了这一点。与其重复所有技术细节,不如让我向您介绍其他问题:

它与域 IIRC 无关。只是它在同一用户下的同一网络服务器上运行。因此,要实现隔离,您需要在具有有限权限的不同用户下运行 webapp。运行您的一个站点的用户应该没有其他用户运行的文件或目录的权限。

无论如何,如果您认为您的网络应用程序将不安全。不要放到网上。

您可能对这个讨论 cookie 范围的 SO 线程感兴趣,正如@Rook 所描述的那样。

解决此问题的一种方法是使用上面链接中说明的Channel Bound Cookies(待处理的 RFC )。