代码之家  ›  专栏  ›  技术社区  ›  Phil.Wheeler

使用CDN托管代码时应考虑哪些安全因素/问题?

  •  11
  • Phil.Wheeler  · 技术社区  · 16 年前

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

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

    我的问题是——这些安全问题的有效性有多高,以及可以采取什么措施来缓解CDN托管网络上发现的任何安全风险?

    5 回复  |  直到 16 年前
        1
  •  11
  •   Community Mohan Dere    9 年前

    How does Google's javascript API get around the cross-domain security in AJAX 有关跨域使用的JavaScript的信息。

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

        2
  •  4
  •   Chris F    16 年前

    在安全方面:数据 否则,传输通道可能被拦截,恶意代码可能通过XSS和CSRF攻击在其位置传输。在我看来,这种可能性再次非常低。

    对于警告消息和不匹配的证书,还存在cookie问题和安全连接问题(通过https而不是http)(请参阅 http://idunno.org/archive/2009/09/16/quick-thoughts-on-the-microsoft-ajax-cdn.aspx

    如果用户使用CDN访问其他站点,CDN的价值将是通过脚本的本地缓存提高一些速度。但对于一个大机构来说,我认为没有必要。

        3
  •  3
  •   austin cheney austin cheney    16 年前

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

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

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

    4) 在JavaScript中,切勿将匿名函数作为函数或方法中的参数传递。这不是通常发生的情况,但是在某些内置方法中,这可以允许通过JavaScript解释器到处理软件的漏洞,然后可以是一个攻击向量来插入导致缓冲区溢出所必需的代码。

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

    6) 只要您在用户体验的几乎所有可能方面都坚持使用有效的XHTML、CSS和文本,并且只使用HTTPS进行通信,您就基本上可以了。

    你必须记住,银行和教育机构收到所有已知攻击的40%,因此你必须假设你的工作将受到攻击和损害。2008年一次攻击的平均成本为1130万美元。如果银行会因为你没有考虑到足够的安全深度而攻击你,你会怎么回应?制定相应的计划,确保你的工作尽可能地被锁定。

        4
  •  2
  •   Ask Bjørn Hansen    16 年前

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

        5
  •  0
  •   kjagiello    16 年前

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

    如果您没有对所有图像、样式等使用任何CDN,那么就不要使用CDN。它只是一个文件,所以对你和你网站的用户来说不会有太大的区别。