使用 Dojo 构建安全的混搭应用

术语混搭(mashup) 通常用于描述通过将两首或多首现有歌曲混合在一起来谱写一首新歌的技术。对于 web 应用程序,混搭 描述合并现有 UI 工件、流程、服务和数据来创建新 web 页面、应用程序等的方法。许多用户和社会媒体环境都使用这种技术。

Mashups 支持通过使用可回收的 UI 元素和松散耦合的服务快速开发新 web 页面和应用程序。它们创建一个敏捷、动态的开发环境,允许技术技巧有限的用户开发强大、有用的 web 页面和应用程序。大多数混搭通过合并现有 UI 工件和高级标记和脚本语言(比如 HTML 和 JavaScript 代码)实现。

混搭开发面临的威胁

混搭开发模型引入了一个开放环境,这个开放环境带来了新的安全威胁,使安全成为开发人员考虑的一个主要问题。由于混搭页面可用于未来混搭的工件或数据源,因此不可能准确预测这些元素将在后续部署中如何使用。因此,关键是开发人员在整个开发生命周期中解决安全问题。

您必须采取新措施来应对混搭开发模型中不断增长的安全风险;传统安全措施,比如 DMZs 和防火墙,不能处理混搭 UI 工件和数据需要的细粒度访问。除了处理传统威胁外,混搭应用程序或 web 页面必须解决跨站点脚本编写(XSS)和跨站点请求伪造(CSRF)等问题。

跨站点脚本编写

狡猾的黑客能够利用软弱的会话管理。例如,当用户被重定向到一个登录页面时,服务器已经对一个现有用户开放,即使 新用户正在向它提供凭证。服务器相信会话已处于活动状态,从而返回一个确信响应给新用户,这表明一个全新的会话被创建且凭证已被安全存储。现有会话的秘密所有者 — 那个黑客 — 此时能够记录和利用在新用户和服务器之间传输的数据,前提是会话保持活动。XSS 技术经常被攻击者采用来绕过浏览器的防火墙,将数据重定向一个第三方站点进行记录。

跨站点请求伪造

在一个 CSRF 攻击过程中,请求源自一个入侵的第三方站点并通过一个已验证的浏览器页面传递到服务器。然后响应被返回到入侵者站点。通常安全机制认为,一旦一个已验证会话已被建立,那么来自已验证的浏览器的所有后续请求都是都是有效的。因此,如果入侵站点能够使已验证浏览器在它和服务器之间来回传递请求和响应,那么该站点就和已验证浏览器拥有同样的特权,隐私就会被侵害。浏览器的同源策略无法阻止 CSRF 攻击,因为攻击请求被传输到第三方入侵站点的代理中相同的源。