12

在一家大型金融公司的网站上工作时,由于“安全问题”,我们倾向于回避使用整个网站使用的 CDN 托管版本的 jQuery 库。

我假设(尽管我从未完全解释过)这些担忧与潜在的物理安全威胁有关,因为代码在 Google 或 Microsoft 的服务器上被泄露的风险,通过这些 CDN 网络变得不可用的声誉风险(从而呈现功能在我们的网站上无用)以及这些情况可能产生的任何其他固有风险。

我的问题是 - 这些安全问题的有效性如何?可以采取哪些措施来减轻 CDN 托管网络上发现的任何安全风险?

4

5 回答 5

11

如果您仅将它们用作 JavaScript 包含的内容,并且由于 JavaScript 只是客户端,它可能可以访问通过 DOM 呈现为 XHTML 的任何内容。这将基于 CDN 是否被黑客入侵以及您包含的 JavaScript 是否被恶意更改。有关跨域使用 JavaScript 的信息,请参阅Google 的 javascript API 如何绕过 AJAX 中的跨域安全性

正如其他人所说,考虑到几乎为零的优势,这根本不值得冒险。JavaScript 库通常太小,无法节省服务器空间/带宽/访问速度/等等……

于 2010-01-21T22:12:37.717 回答
4

关于 CDN 网络变得不可用:这是极不可能的,并且可用性百分比可能会高于您自己的网络。您可以争辩说,自己托管它至少可以确保唯一的停机时间是当您的系统出现故障时,从而使导致问题的网络故障的横截面最小。

关于安全性:数据可能会被破坏,或者传输通道可能被截获,恶意代码通过 XSS 和 CSRF 攻击在其位置传输。在我看来,这种可能性再次非常低。

还有关于警告消息和不匹配证书的 cookie 问题和安全连接问题(通过 https 而不是 http)(参见http://idunno.org/archive/2009/09/16/quick-thoughts-on-该-microsoft-ajax-cdn.aspx)。Microsoft 确实支持 SSL,但我不确定 Yahoo 和 Google(他们应该这样做)。Google 不会使用 cookie 进行跟踪,但他们仍会看到 IP 访问他们的 CDN 网络,如果他们愿意,可以使用它进行跟踪。

如果用户使用 CDN 访问其他站点,CDN 的值将通过脚本的本地缓存获得一些速度。但对于一家大型机构,我认为没有必要。

于 2010-01-21T22:05:41.177 回答
3

一旦用户登录,我会尽量避免任何类型的客户端脚本,除非绝对必要。以下是我建议的有关在线金融服务的网络工作的建议:

1) 通过 HTTPS 从同一域将所有资产发送给用户。虽然它的带宽较慢且成本最高,但它也更安全,因为您可以直接控制所有资产不受操纵。我所说的所有资产是指所有资产,甚至包括图像,因为对包含文本内容的图像的操作可用于在网络钓鱼尝试之前发送虚假指令。在这方面,我不会使用 CDN 来存储您的资产,因为那不是您拥有的位置,因此您对监控存储的数据以防篡改的控制较少。

2) 不要对 XMLHttpRequest 对象使用 AJAX 或其他任何东西。异步通信的要点是在重新加载页面之外的点之间信标信息。这对可用性很有好处,但完全破坏了安全性。由于它在客户端执行,因此在用户端解密信息后,通过将信息从用户发送到不受信任的第三方,也可以使用受感染的代码来破坏合法的 SSL 加密。在处理购买、PII 或财务数据时,始终确保来自用户的每项信息交易都会强制页面重新加载或新页面。

3) 避免使用任何类型的客户端脚本。该方法根本不使用 ActiveX、Flash 甚至 Acrobat。95% 的报告安全漏洞归因于客户端脚本,其中 70% 的攻击针对处理软件的内存损坏。尽管 JavaScript 通常不以缓冲区溢出而闻名,但我仍然建议尽可能少地使用它来仅操作 DOM。

4) 永远不要将匿名函数作为参数传递给 JavaScript 中的函数或方法。这不是经常发生的事情,但在某些内置方法的情况下,这可能会允许通过 JavaScript 解释器到达处理软件的漏洞,这可能是插入导致缓冲区溢出所必需的代码的攻击媒介。

5)不要使用onsubmit事件将脚本执行附加到表单数据的提交中。违反执行代码,或附加额外的恶意代码,可以创建一个点,其中包含 XMLHttpRequest 函数,以便在将表单数据发送到受信任源之前匿名将表单数据发送给不受信任的第三方,即使该操作的传输协议也是如此属性是 HTTPS。

6) 只要您在用户体验的几乎所有可能方面都坚持使用 VALID XHTML、CSS 和文本,并且仅使用 HTTPS 进行通信,那么您应该没问题。

You have to keep in mind that banks and educational institutions receive 40% of all known attacks, so you MUST assume your work will be attacked and compromised. The average cost of a single attack in 2008 was $11.3 million. If the bank could attack you for those damages, because you did not consider the full depth of security, how would you respond? Plan accordingly to ensure your work is as locked down as possible.

于 2010-01-22T08:23:48.877 回答
2

您应该查看免费 CDN 托管版本的条款和条件(如果有)。然而,对于“一家大型金融公司”来说,这可能还不够好。

如果您想使用 CDN,与其中一个签订合同并使用您自己的“CDN 托管”版本怎么样?CDN 带宽非常实惠。

于 2010-01-21T21:59:20.947 回答
0

我猜他们服务器的安全性比你服务器的安全性要好得多,但是对他们服务器的攻击量远远高于对你服务器的攻击量。

如果你没有为所有的图片、样式等使用任何 CDN,那么就不要使用 CDN。它只是一个文件,因此不会对您和您网站的用户产生任何重大影响。

于 2010-01-21T21:59:04.233 回答