在一家大型金融公司的网站上工作,由于“安全问题”,我们倾向于回避使用我们网站中使用的CDN托管版本的jQuery库。
我假设(虽然我从来没有完全解释过)这些问题与潜在的物理安全威胁有关,因为代码在Google或Microsoft的服务器上受到威胁,通过这些CDN网络变得无法获得声誉风险(从而使我们网站上的功能无用)以及这些情况可能产生的任何其他固有风险。
我的问题是 - 这些安全问题的有效性以及可以采取哪些措施来缓解CDN托管网络上发现的任何安全风险?
答案 0 :(得分:11)
如果你只使用它们作为JavaScript包含,并且由于JavaScript只是客户端,它可能有权访问通过DOM呈现为XHTML的任何内容和所有内容。这将取决于CDN是否遭到黑客攻击以及您所包含的JavaScript是否被恶意更改。有关跨域使用的JavaScript的信息,请参阅How does Google's javascript API get around the cross-domain security in AJAX。
正如其他人所说的那样,考虑到几乎为零的优势,这种风险根本不值得。 JavaScript库通常太小而无法保存服务器空间/带宽/访问速度等等......
答案 1 :(得分:4)
关于CDN网络变得不可用:这种可能性极小,而且可用性百分比可能会高于您自己的网络。您可以争辩说,自己托管它至少可以确保唯一的停机时间是系统出现故障,从而导致问题的网络故障的横截面最小。
关于安全性:数据可能受到攻击,或者传输信道可能被截获,恶意代码通过XSS和CSRF攻击传输到其位置。在我看来,这种可能性再次非常低。
对于警告消息和不匹配的证书,还存在cookie问题和安全连接问题(通过https而不是http)(请参阅http://idunno.org/archive/2009/09/16/quick-thoughts-on-the-microsoft-ajax-cdn.aspx)。微软确实支持SSL,但我不确定雅虎和谷歌(他们应该)。 Google不会使用Cookie进行跟踪,但他们仍然会看到IP到达他们的CDN网络,如果他们愿意,可以使用它进行跟踪。
如果用户使用CDN访问了其他某个站点,则CDN的值将通过脚本的本地缓存获得一定的速度。但对于一个大型机构,我认为没有必要。
答案 2 :(得分:3)
一旦用户登录,我会尝试避免任何类型的客户端脚本,除非绝对必要。以下是我推荐的有关在线金融服务的网络工作的建议:
1)通过HTTPS从同一域发送所有资产给用户。虽然它对带宽来说速度较慢且成本最高,但它也更安全,因为您可以直接控制所有资产。通过所有资产,我的意思是所有资产甚至包括图像,因为操纵包含文本内容的图像可以用于在网络钓鱼尝试之前发送错误指令。在这方面,我不会使用CDN来存储您的资产,因为这不是您拥有的位置,因此您无法控制监控存储的数据以进行篡改。
2)不要在XMLHttpRequest对象中使用AJAX或其他任何东西。异步通信的关键是在重新加载页面之外的点之间的信标信息。这对于可用性来说非常好,但完全会破坏安全性。由于它在客户端执行,因此在用户端解密信息之后,通过将信息从用户发送到不受信任的第三方,还可以使用受损代码来破坏合法的SSL加密。处理购买,PII或财务数据时,始终确保用户的每次信息交易都会强制重新加载页面或新页面。
3)避免使用任何类型的客户端脚本。手段根本不使用ActiveX,Flash甚至Acrobat。所有报告的安全漏洞中有95%归因于客户端脚本,其中70%的攻击针对处理软件的内存损坏。虽然JavaScript通常不知道缓冲区溢出,但我仍然建议尽可能少地使用它来操作DOM。
4)永远不要将匿名函数作为参数传递给JavaScript中的函数或方法。这不是常见的情况,但在某些内置方法的情况下,这可能允许通过JavaScript解释器到处理软件的漏洞,然后可能是插入导致缓冲区溢出所必需的代码的攻击向量。 p>
5)不要使用onsubmit事件将脚本执行附加到表单数据的提交。违反正在执行的代码或附加额外的恶意代码,可以创建一个点,在该点中包含XMLHttpRequest函数,以便在将表单数据发送到可信来源之前匿名将表单数据信号发送给不受信任的第三方,即使操作的传输协议也是如此属性是HTTPS。
6)只要你坚持使用VALID XHTML,CSS和文本几乎所有可能的用户体验方面,并且只使用HTTPS进行通信,你就应该很好。
你必须记住,银行和教育机构收到所有已知攻击的40%,所以你必须假设你的工作会受到攻击和危害。 2008年单次袭击的平均成本为1130万美元。如果银行可以攻击您的损失,因为您没有考虑到全面的安全保障,您会如何回应?相应地计划以确保您的工作尽可能地被锁定。
答案 3 :(得分:2)
您应该查看免费CDN托管版本的条款和条件(如果有)。但是,对于“一家大型金融公司”来说,它可能不够好。
如果您想使用CDN,如何与其中一个签订合同并使用您自己的“CDN托管”版本? CDN带宽非常实惠。
答案 4 :(得分:0)
我猜他们的服务器的安全性比服务器的安全性要好得多,但是对他们服务器的攻击量远高于对你的服务器的攻击量。
如果您没有对所有图像,样式等使用任何CDN,那么根本不要使用CDN。它只是一个文件,因此它不会对您和您网站的用户产生任何重大影响。