云安全公司Qualys工程总监迈克•施玛(Mike Shema)发表评论文章称,尽管HTML5使网站的功能更为强大,但开发人员需充分利用其新的技术特征来提高网站的安全性。HTML5允许浏览器存储更多的数据并改进了cookie功能,但如果使用不当反而会带来安全和隐私问题。
以下为原文:
HTML5技术的出现使得过去20多年一直驱动web内容的技术焕发了新的活力。值得一提的是,当前主流浏览器仍然可以呈现绝大部分20多年前的使用较老web技术的网站,不过现在的网站都希望浏览器的功能较以往更加强大。Facebook就尝试通过使用一个纯HTML5移动应用程序来推动这些计算边界进一步发展,但发现数十亿用户使它受到了一些限制。
新的技术标准同样带来了安全问题,网站不会因为仅仅在页面增加一句定义声明就会立即得到优化。相反,通过采用新的技术特征可以提高网站的安全性,这些特征主要是指包括控制浏览器如何与不同的信息来源共享资源以及交互内容,其他特征还包括允许浏览器存储更多的数据、Cookie性能的优化等,不过如果对这些新特性使用不当,反而会带来相应的安全和隐私方面的隐患。
跨源资源共享
浏览器的安全性绝大部分依仗的是SOP(Same Origin Policy),即同源策略,指一个域的文档或脚本,不能获取或修改另一个域的文档的属性,也就是AJAX不能跨域访问。Web资源访问的根本策略都是建立在SOP上的,这使得后来制订出很多跨域方案,比如JSONP。
跨源资源共享(CORS),它定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。它有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。应用CORS的系统目前包括Face.com、谷歌云存储API等,主要是为开放平台向第三方提供访问的能力。
CORS非常有用,可以共享许多内容,不过这里存在风险。因为它完全是一个盲目的协议,只是通过HTTP头来控制。它的风险包括:无法保证HTTP头的真实性、恶意跨域请求、内部信息泄漏、针对用户的攻击等等。
CORS有多种方法定义一个可靠声明的持续时间、浏览器跨域访问时应该包含的方法和字头等。因此务必使这些网站正常工作的必须值保持为最小,而不是对所有的浏览器都开放。
iFrame沙箱
iFrame沙箱采用了一种完全不同的策略用以控制浏览器如何信任网站内容,尽管仍然用于浏览器内部的安全性方面,iFrame的重点已经逐渐从共享内容转移到限制内容的执行能力,sandbox属性可以防止不信任的Web页面执行某些操作,包括:访问父页面的DOM、执行脚本文件、通过脚本嵌入自己的表单或是操纵表单、对cookie、本地存储或本地SQL数据库的读写、禁用插件、禁止其他浏览上下文的导航、禁止弹出窗口和模式对话框等。
iFrame因安全问题而臭名昭著,这主要是因为iFrame常常被用于嵌入第三方内容,而后者则可能会执行某些恶意操作。sandbox通过限制被嵌入内容所允许的操作而提升iFrame的安全性,这种方式将沙箱内容与父页面进行了分离,因此限制了被嵌入内容的权限,不过这并不意味着用户不再需要检测数据以防止潜在的攻击。
基于浏览器的存储
新时代总会带来新的关键词,“大数据”恐怕是当下最流行的,Web应用的发展,使得客户端存储获得了越来越多的使用,而实现客户端存储的方式则是多种多样。最简单而且兼容性最佳的方案是Cookie,但是作为真正的客户端存储,Cookie则存在很多致命伤。此外,在IE6及以上版本中还可以使用 user Data Behavior、在Firefox下可以使用global Storage、在有Flash插件的环境中可以使用Flash Local Storage,但是这几种方式都存在兼容性方面的局限性,因此真正使用起来并不理想。
HTML5中给出了更加理想的解决方案:通过提供本地存储和Indexed数据库等API接口使得web应用可以在浏览器中存储大量数据;因此安全性不仅涉及到存储的数据,同时也涉及到访问方式。因此本地存储对于缓存内容和保存不敏感用户数据来说是一个绝佳的选择,不过保存密码、信用卡号或者其它需要安全加密的数据则效果不佳。
基于浏览器的存储增加了应用程序收集和操作数据的灵活性,只需将处理器中待操作的任务从服务器转移到浏览器即可,但是并不能转移安全性的需求。
浏览器处处充满危险,当使用HTML5时务必要时刻谨记,HTML5的新特性或许可以让你的数据在浏览器中更加安全,但是一旦在服务器和数据库中传输时,你需要多加小心。(MK)