HTML5安全风险详析之二:Web Storage攻击

摘要:
HTML5支持WebStorage。开发人员可以为应用程序创建本地存储,以存储一些有用的信息。

HTML5支持WebStorage,开发者可以为应用创建本地存储,存储一些有用的信息。例如LocalStorage可以长期存储,而且存放空间很大,一般是5M,极大的解决了之前只能用Cookie来存储数据的容量小、存取不便、容易被清除的问题。这个功能为客户端提供了极大的灵活性。

一、WebStorage简介

HTML5支持WebStorage,开发者可以为应用创建本地存储,存储一些有用的信息。例如LocalStorage可以长期存储,而且存放空间很大,一般是5M,极大的解决了之前只能用Cookie来存储数据的容量小、存取不便、容易被清除的问题。这个功能为客户端提供了极大的灵活性。

二、攻击方式

LocalStorage的API都是通过Javascript提供的,这样攻击者可以通过XSS攻击窃取信息,例如用户token或者资料。攻击者可以用下面的脚本遍历本地存储。

  1. 01.if(localStorage.length){    
  2. 02.         for(I in localStorage) {    
  3. 03.                   console.log(i);    
  4. 04.                   console.log(localStorage.getItem(i));    
  5. 05.         }    
  6. 06.}   

同时要提一句,LocalStorage并不是唯一暴露本地信息的方式。我们现在很多开发者有一个不好的习惯,为了方便,把很多关键信息放在全局变量里,例如用户名、密码、邮箱等等。数据不放在合适的作用域里会带来严重的安全问题,例如我们可以用下面的脚本遍历全局变量来获取信息。

    • 01.for(iin window) {    
    • 02.         obj=window[i];    
    • 03.         if(obj!=null||obj!=undefined)    
    • 04.             var type =typeof(obj);    
    • 05.         if(type=="object"||type=="string") {    
    • 06.             console.log(“Name:”+i);    
    • 07.             try {    
    • 08.                 my = JSON.stringify(obj);    
    • 09.                 console.log(my);    
    • 10.             } catch(ex) {}    
    • 11.         }    
    • 12.}   

三、攻击工具

HTML5dump的定义是“JavaScriptthat dump all HTML5 local storage”,它也能输出HTML5 SessionStorage、全局变量、LocalStorage和本地数据库存储。

HTML5安全风险详析之二:Web Storage攻击第1张

四、防御之道

对于WebStorage攻击的防御措施是:

1、数据放在合适的作用域里

例如用户sessionID就不要用LocalStorage存储,而需要放在sessionStorage里。而用户数据不要储存在全局变量里,而应该放在临时变量或者局部变量里。

2、不要存储敏感的信息

因为我们总也无法知道页面上是否会存在一些安全性的问题,一定不要将重要的数据存储在WebStorage里。

免责声明:文章转载自《HTML5安全风险详析之二:Web Storage攻击》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【深度学习系列】PaddlePaddle可视化之VisualDLLinux 通过安装vncserver,客户端远程连接展示图形化界面下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTML5中实现文件上传下载的三种解决方案(推荐)

前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践。该博客重在实践。 一. Http协议原理简介      HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于19...

利用html5调用本地摄像头拍照上传图片

   html5概念啥的就不废话了,不知道的 百度, 谷歌一堆。。今天学了学html5中的Canvas结合新增的<video>标签来获取本地摄像头,在html5之前,要在浏览器获取本地摄像头只有通过插件(ActiveX,但是这种只有IE支持)或者是flash来获取(或许你没学过flash那就很坑爹了),在之后微软的silvertlight中也...

[转]Windows8的WPF技术与HTML5的比较

Windows8风格程序支持使用WPF和HTML两种方式进行编程。本人之前曾使用WPF开发过概念版QQ,现在又在使用HTML5。两种技术都略懂,略懂。所以将两者做了个比较。虽然WPF的命运多舛,应用不太广泛,但技术本身还是有很多亮点的。值得我们学习一下,开阔眼界。   严格说WPF与Silverlight都属于.Net技术体系下新一代的界面技术,都使用标...

8个非常有用的HTML5工具

摘要 今天我们将大家介绍一些非常好的在线工具,可以帮助Web开发人员在HTML5编码时更加容易和简单。在些在线工具包括:HTML5 Visual Cheat Sheet, Swith to HTML5, Initializr, HTML5 Canvas Cheat Sheet, LimeJS, HTML5 Demos, Web Apps Tracker和H...

html5与EmguCV前后端实现——人脸识别篇(一)

  上个月因为出差的关系,断更了很久,为了补偿大家长久的等待,送上一个新的系列,之前几个系列也会抽空继续更新。   大概半年多前吧,因为工作需要,我开始研究图像识别技术。OpenCV在这方面已经有了很多技术积累,在html5领域也很早就有了这方面的Demo。但是一番学习下来,我发现基本上这方面的文章大都比较零散片面,而且很多关键的代码可能已经老化不能正常使...

HTML5--(3)过渡+动画+颜色+文本

一.过渡transition transition-property指定属性名称(如width、height、background-color、内外边距)all 所有属性都将获得过渡效果(默认) attr 过渡效果的CSS属性名称列表,列表以逗号分隔 none 没有属性会获得过渡效果 transition-duration过渡时间3s (默认慢快...