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

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

1、WebStorage简介安全

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

2、攻击方式工具

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

  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并非惟一暴露本地信息的方式。咱们如今不少开发者有一个很差的习惯,为了方便,把不少关键信息放在全局变量里,例如用户名、密码、邮箱等等。数据不放在合适的做用域里会带来严重的安全问题,例如咱们能够用下面的脚本遍历全局变量来获取信息。xml

 

    • 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.}   

3、攻击工具token

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

4、防护之道作用域

对于WebStorage攻击的防护措施是:开发

一、数据放在合适的做用域里

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

二、不要存储敏感的信息

由于咱们总也没法知道页面上是否会存在一些安全性的问题,必定不要将重要的数据存储在WebStorage里。

相关文章
相关标签/搜索