HTML5能够替代Flash 增强Web安全性?

尽管现在所有连接互联网的计算机都安装了Flash(Adobe问题不断的Web多媒体格式),但是似乎它很快就会被新标准HTML5所替代。按照Adobe自己话说,“HTML5现在得到主流移动设备的普遍支持,并成为创建和部署面向移动平台浏览器内容的最佳解决方案。”

对于企业攻击者而言,这无疑是一个坏消息。近几年来,Flash已经成为恶意程序黑客的主要攻击目标。根据安全研究公司WhiteHat Security Inc.的数据,与Flash播放器相关的漏洞占他们发现的Web应用程序漏洞的14%左右。

那么,Flash的消失是否是一个安全利好消息?HTML5是否会替代Flash?如果会,那么HTML5安全性能否与Flash对抗?安全人员应该如何做好部署HTML5 Web内容的准备?下面,我们将会针对这些问题展开讨论。

HTML5得到了许多互联网巨头的支持,包括Facebook、谷歌和PayPal。事实上,它正在成为将来的互联网视频标准,并且会替代所有非标准格式,如Flash和微软的Silverlight。Flash是一种二进制的多媒体内容格式,采用面向对象开发语言ActionScript,需要安装Adobe插件。相反,HTML5是一种开放源码的标记语言,不需要任何插件就能够运行应用程序。删除了视频播放私有插件,也就关上了常见的攻击载体,因为HTML5更新是通过浏览器更新实现的,所以它们的更新速度远远比插件快。然而,HTML5有更多的计算机资源访问权限,包括本地数据存储,从而也成为新的潜在攻击目标。

对于HTML5,我主要担心的是,开发人员在未完全理解它的新特性及安全机制之前,就匆匆在网站上添加HTML5特性。例如,跨域资源共享 (CORS)使Web服务器允许其他域名的网页访问自己的资源。CORS放宽了同源访问规则(Same Origin Rule),这是Web浏览器内置的基础安全措施之一。除非开发人员理解CORS的工作原理,否则他们很容易做出错误的假设,使攻击者能够访问所共享的内容。HTML5跨文档消息也有相同的问题。如果使用正确,它会很安全,但是如何开发者不确保消息来自自己的网站,那么其他网站的恶意代码可能会发送欺骗性流氓消息。基本的安全原则是,来自浏览器的数据都应该视为不可信数据,因此必须进行验证。在Web应用程序开发过程中,一定要检查当前的验证过程和过滤器,因为HTML5新元素和属性可能会产生一些意外结果。应用程序内置的基于白名单的过滤器确实更具灵活性。

如果开发者使用技术的方法偏离该技术原来的目标,那么任何技术都可能出现安全漏洞。例如,HTML5 Web存储标准为开发者提供了一种更灵活方法,可以替代Cookie在浏览器上存储数据。当然,存储用户敏感数据存在一定的风险,可能会受到跨站脚本 (XSS)的攻击,但是有一些网站已经使用这种技术来存储脚本,以提高页面加载速度。例如:为了节省时间和带宽,前面的Web服务Apture使用一个 localStorage对象,缓存它的应用程序逻辑代码,但是与这些脚本在同一个域的页面可能存在XSS漏洞,可能会被利用,向缓存注入恶意代码。利用 Apture服务,恶意代码可能会将漏洞变成面向所有域的持久客户端XSS攻击。从第三方提取数据或脚本会创建一种隐含的信任关系。开发者必须认识到这种潜在风险,理解如何在内容放到网站之前对内容进行审查。

将一种技术扩展到它原先的适用范围之外,可能会产生其他的错误。HTML5是一种异步技术,但是开发者可使用JavaScript将它变成同步技术。如果一个事务在转到下一个状态之前必须获取一个响应,那么必须仔细检查业务逻辑控制机制,保证事务处理的顺序是否正确,如数据库事务。

安全团队需要使用WebSocket API,它可以替代浏览器,向Web服务器请求最新的数据。服务器会在出现新数据时才发送数据,从而减少服务器与浏览器的流量。但是,WebSocket 可以绕过许多重要的网络安全控制机制,包括传统的数据包头,而防火墙正是通过检查数据包头来阻挡可疑流量的。基于信誉的防御也会受到影响。这样就增加了防火墙进行深度内容检测的负载,因为只有深度内容检测才能够处理WebSocket流量,检查流量的内容、结构和用途。所以再说一次,白名单过滤的效率确实会更高一些。

HTML5标准机构及浏览器厂商已经完全考虑了如何根除某些特定的安全性和保密问题。然而,HTML5仍然未成为正式的标准,对于那些未掌握编写安全代码的开发者而言,它肯定还不是一种绝对安全的多媒体Web开发技术。即使是对于能够编写安全代码的开发者而言,他们仍然需要面对网络欺诈、恶意软件和拒绝服务攻击。使用HTML5代码替换网站原来的应用程序是一个很大的改动,总会遇到一些问题。在开始实施之前一定要全面测试恢复过程,而且同时在开始时就要运行一些重要功能。为了更一步防御各种攻击,我推荐将网站升级到HTTPS。

任何HTML5开发都必须进行渗透测试,而且要使用HTML5创建复杂的前台,保证它们的运行结果都符合要求。攻击者肯定会测试浏览器厂商实现的新功能和新数据格式,如、及其属性,从中发现可能导致缓冲溢出和其他攻击的编码错误。这意味着安全团队和开发者必须跟进供应商更新,保证尽快更新补丁和修复安全漏洞。

HTML5意味着开发者现在可以使用开放标准在网站上实现多媒体特性。这比以前使用第三方插件技术显然先进了很多。只要开发者投入足够时间,学习如何安全地使用各种新特性,那么安全行业就有望实现更丰富且更安全的互联网。然而,历史表明,这是不可能的,所以我们总是需要实施强有力的边界防御和渗透测试。