关于HTML5的安全问题开发人员需要牢记的


Posted in HTML / CSS onJune 21, 2012

应用程序安全专家表示,HTML5给开发人员带来了新的安全挑战。

苹果公司与Adobe公司之间的口水战带来对HTML 5命运的诸多猜测,尽管HTML 5的实现还有很长的路要走,但可以肯定的一点是,运用HTML 5的开发人员将需要为应用程序安全开发生命周期部署新的安全功能以应对HTML5带来的安全挑战。

那么HTML5将会对我们需要覆盖的攻击面带来怎样的影响?本文将探讨关于HTML 5几个重要安全问题。

客户端存储

早期版本的HTML仅允许网站将cookies作为本地信息存储,而这些空间相对较小,仅适用于存储简单的档案信息或者作为存储在其他位置的数据(例如会话ID)的标识符,Denim集团应用程序安全研究部门的主管Dan Cornell表示。然而,HTML5 LocalStorage则允许浏览器本地存储大量据库,允许使用新类型应用程序。

“随之而来的风险就是,敏感数据可能被存储在本地用户工作站,而物理访问或者破坏该工作站的攻击者,就能够轻松获得敏感数据,”Cornell表示,“这对于使用共享计算机的用户更加危险。”

“从定义上来说,它真的只是能够在客户端系统存储信息,”Rapid7公司的安全研究人员Josh Abraham表示,“那么你就具备基于客户端SQL注入攻击的潜在能力,或者可能你的某个客户端的数据库是恶意的,当与生产系统同步时,则可能出现同步问题,或者客户端的潜在恶意数据将被插入到生产系统。”

为了解决这个问题,开发人员需要能够验证数据是否为恶意的,这其实是个很复杂的问题。

对于这个问题的重要性并不是所有人都赞同。Veracode公司首席技术官Chris Wysopal表示,例如web应用程序通过使用插件或者浏览器扩展存储数据客户端就一直存在很多方法。

“有很多已知的方法可以操控目前部署的HTML5 SessionStorage属性,但是标准最终确定时,这个问题才会解决,”Wysopal表示。

跨域通信

而其他版本的HTML可能直允许JavaScript发出XML HTTP请求调用回原来的服务器,而HTML5放宽了这个限制,XML HTTP请求可以发送给任何允许这种请求的服务器。当然,如果服务器不可信任的话,这也会带来严重安全问题。

“例如,我可以建立一个mashup(糅合,将两种以上使用公共或者私有数据库的web应用合并形成一个整合应用)通过 JSON(Javascript Object Notation)将第三方网站的比赛比分拉过来,”Cornell表示,“这个网站可能会发送恶意数据到我的用户浏览器正在运行的应用程序上。虽说 HTML5允许新类型的应用程序的建立,但如果开发人员在开始使用这些功能时,并不理解他们所建立的应用程序的安全意义,那么将会给用户带来很大安全风险。”

对于依赖于PostMessage()来编写应用程序的开发人员而言,必须仔细检查以确保信息是来源于他们自己的网站,否则来自其他网站的恶意代码可能会制造恶意信息,Wysopal补充说。这个功能本身并不是安全的,开发人员已经开始使用不同的DOM(文档对象模型)/浏览器功能来效仿跨域通讯。

另一个相关问题是,万维网联盟目前为跨源资源共享设计提供了一种使用类似与跨域机制绕过同源政策的方法。

“IE部署的安全功能与Firefox、Chrome以及Safari都不相同,”他指出,“开发人员需要确保他们创建过于宽松访问控制列表的危害,特别是因为某些参考代码目前非常不安全。

Iframe安全

从安全角度来看,HTML5也有不错的功能,例如计划支持iframe的沙盒属性。

“这个属性将允许开发者选择数据如何解译的方式,”Wysopal表示,“不幸的是,与大部分HTML一样,这个设计很可能被开发人员误解,很可能因为不便于使用而被开发人员禁用。如果处理得当,这个功能将能够帮助抵御恶意第三方广告或者防止不可信任内容重放。”

HTML / CSS 相关文章推荐
详解css3 mask遮罩实现一些特效
Oct 24 HTML / CSS
Web页面中八种创建多列等高(等高列布局)的实现技术
Dec 24 HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
May 24 HTML / CSS
CSS3贝塞尔曲线示例:创建链接悬停动画效果
Nov 19 HTML / CSS
html5定制表单_动力节点Java学院整理
Jul 11 HTML / CSS
基于HTML5的WebSocket的实例代码
Aug 15 HTML / CSS
HTML5注册页面示例代码
Mar 27 HTML / CSS
HTML5新特性之用SVG绘制微信logo
Feb 03 HTML / CSS
H5混合开发app如何升级的方法
Jan 10 HTML / CSS
CSS3中Animation实现简单的手指点击动画的示例
Jul 15 HTML / CSS
开发微信小程序之WXSS样式教程
Apr 18 HTML / CSS
HTML页面中使两个div并排显示的实现
May 15 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
Jun 21 #HTML / CSS
网易微博Web App用HTML5开发的过程介绍
Jun 13 #HTML / CSS
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
Jun 04 #HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
May 28 #HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
May 28 #HTML / CSS
html5 兼容IE6结构的实现代码
May 14 #HTML / CSS
html5 Canvas绘制线条 closePath()实例代码
May 10 #HTML / CSS
You might like
xml+php动态载入与分页
2006/10/09 PHP
php 函数中使用static的说明
2012/06/01 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
javascript OFFICE控件测试代码
2009/12/08 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
详解Python中的多线程编程
2015/04/09 Python
python实现发送邮件及附件功能
2021/03/02 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
python机器学习实现决策树
2019/11/11 Python
django教程如何自学
2020/07/31 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
sort命令的作用和用法
2013/08/25 面试题
快递员岗位职责
2014/09/12 职场文书
个人自荐书怎么写
2015/03/26 职场文书
目标责任书格式范文
2015/05/11 职场文书
英语投诉信范文
2015/07/03 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL