我的一个 Web 应用程序最近进行了漏洞评估,其中一项发现是关于跨域包含脚本的。我们的网络应用程序使用AddThis中的 addthis_widget.js 来为 Facebook/Twitter 等添加书签。建议我们将脚本的内容复制到我们自己的域中并从那里包含它,或者在我们自己的代码中重新实现脚本的功能。
这真的是一个可利用的问题吗?
我的一个 Web 应用程序最近进行了漏洞评估,其中一项发现是关于跨域包含脚本的。我们的网络应用程序使用AddThis中的 addthis_widget.js 来为 Facebook/Twitter 等添加书签。建议我们将脚本的内容复制到我们自己的域中并从那里包含它,或者在我们自己的代码中重新实现脚本的功能。
这真的是一个可利用的问题吗?
如果代码由大型内容交付网络 (CDN) 提供服务,例如 Google 的 CDN,那么您很可能会通过其他方式被黑客入侵。大型 CDN 有很多钱可以花在安全上,而且 CDN 不太可能成为您自己基础设施的弱点。
一旦网站达到一定的受欢迎程度,它就需要从 CDN 提供静态内容。考虑以下帖子:
为什么我应该为 jQuery 使用 Google 的 CDN?
CDN 带来的好处超过了破坏分发静态内容的维护良好的服务器的极不可能的可能性。话虽如此, 我在 Akamai 产品中发现了一个重大缺陷......
是的,这是一个安全问题。
包含的 JavaScript 在您的网站上下文中运行,这意味着它可以控制您可以控制的任何内容。
外部 JavaScript 文件可能会通过以下方式伤害您:
因此,您应该仅在以下情况下包含外部 JavaScript 文件:
当然,从外部服务器包含 JavaScript也有好处:
包含来自其他站点的脚本的主要问题是他们(甚至是入侵其服务器的人)可能会修改脚本以包含恶意代码。
现在你有 2 个选项有相当大的“缺点”:
老实说,我会坚持包括 AddThis 脚本(来自他们的服务器),但是,你有一个安全顾问为你工作......与他讨论 3 个选项以及你看到的每个选项的缺点(重新实现、跨域、复制到你的服务器)。