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