开扒本地存储—localStorage
.localStorage是什么狂点查看demo
localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期
的。
2.localStorage有哪些优点
1). 存储空间
存储空间 更大:IE8下每个独立的存储空间为10M,其他浏览器实现略有不同,但都比
Cookie要大很多。
2). 服务器
存储内容不会发送到服务器:当设置了Cookie后,Cookie的内容会随着请求一并发送的
服务器,这对于本地存储的数据是一种带宽浪费。而Web Storage中的数据则仅仅是存
在本地,不会与服务器发生任何交互。
3).接口
更多丰富易用的接口:Web Storage提供了一套更为丰富的接口,使得数据操作更为简
便。
4). 存储空间
独立的存储空间:每个域(包括子域)有独立的存储空间,各个存储空间是完全独立
的,因此不会造成数据混乱。当把当前网页或者浏览器关掉并再进入时,localStorage
中的数据还是存在的。那么,这个数据是存在什么地方的呢?
查找后发现对于Chrome Browser, 其缺省存在以下地址:C:/Documents and Settings/UserName/Local Settings/Application Data/Google/Chrome/User Data/Default/Local Storage
3.适用浏览器
Chrome4+ 开始支持localStorage
Firefox3.5+开始支持localStorage
Firefox1.5+支持globalStorage
IE8+支持localStorage
IE7兼容模式支持localStorage
IE5.5+支持userdata
Safari 4+ 支持localStorage
Opera10.5+支持localStorage
Netscape Navigator最后一版(9.0.0.6)支持localStorage,其余版本未测
现在主流的浏览器除ie6,ie7外都支持localstorage,可以支持的用localstorage,不支
持的用cookie代替(但不建议这么做)
4.判断适用浏览器
function getLocalStorage() {
try {
if( !! window.localStorage ) return window.localStorage;
} catch(e) {
return undefined;
}
}
5.localStorage的用法
localStorage. length:返回现在已经存储的变量数目。
localStorage. key(n):返回第n个变量的键值(key)。
localStorage.getItem(k):和localStorage.k一样,取得键值为k的变量的值。
localStorage.setItem(k , v):和localStorage.k = v一样,设置键值k的变量值。
localStorage.removeItem(k):删除键值为k的变量。
localStorage.clear():清空所有变量。
6.IE6-7解决方案
if(!window.localStorage && /MSIE/.test(navigator.userAgent)){
if(!window.UserData) {
window.UserData = function(file_name) {
if(!file_name) file_name="user_data_default";
var dom = document.createElement('input');
dom.type = "hidden";
dom.addBehavior ("#default#userData");
document.body.appendChild(dom);
dom.save(file_name);
this.file_name = file_name;
this.dom = dom;
return this;
};
window.UserData.prototype = {
setItem:function(k, v) {
this.dom.setAttribute(k,v);
this.dom.save(this.file_name);
},
getItem:function(k){
this.dom.load(this.file_name);
return this.dom.getAttribute(k);
},
removeItem:function(k){
this.dom.removeAttribute(k);
this.dom.save(this.file_name);
},
clear:function() {
this.dom.load(this.file_name);
var now = new Date();
now = new Date(now.getTime()-1);
this.dom.expires = now.toUTCString();
this.dom.save(this.file_name);
}
};
}
window.localStorage = new window.UserData("local_storage");
}
不支持原生localStorage 所有方法,只支持4中扩展出来的自定义方法
7.本地存储安全
(1)、不要存储敏感信息;
(2)、严格过滤输入输出
对于本地存储,为了方便再次加载数据,常常会把数据存储在本地。等再此加载的时
候,直接从本地读取数据显示在网页上。在某些情况下,在通过在 localStorage存储中
写入或读取数据的时候,如果数据没有经过输入输出严格过滤,那么极易可能这些数据
被作为HTML代码进行解析,从而产生 XSS攻击。
Twitter就发生过localStorage XSS漏洞。次漏洞触发的条件是,在Twitter的个人主页
上执行以下存储代码后,每次再打开个人主页时就会弹出/xss/框。
localStorage.setItem(“:USER:”,’{“name”:{“value”:{“store”:{“recentFollowers”:{“value”:”name<script>alert(/xss/)</script>”}}}}}’);
从这段代码可以看出,Twitter会使用localStorage方法把一些个人数据存储到本地,每
次加载个人主页面的时候就会从本地存储取数据,然后由于Twitter忽略了对去除数据的
严格过滤导致存储的代码会被当作HMTL编码执行,进而发生跨站攻击。
Twitter localStorage XSS 漏洞详细信息可以查看:
http://www.wooyun.org/bugs/ wooyun-2010-03075。虽然Twitter这个漏洞利
用起来非常困难,但它再一次告诉我们本着一切输入输出都是有害的原则,要对数据进
行严 格的输入输出过滤。
(3)、容易遭受跨目录攻击
localStroage存储方式不会像Cookie存储一样可以指定域中的路径,在localStroage存
储方式中没有域路径的概念。也就是说,如果一个域下的任意路径存在XSS漏洞,整个
域下存储的数据,在知道存储名称的情况下,都可以被获取到。
假设下面两个链接是使用localStorage来存储数据:
http://h.example.com/xisigr
http://h.example.com/xhack
用户xisigr和xhack各自的blog链接虽然属于同一个域,但却有不同的路径,一个路径为
xisigr,另一个路径为xhack。假设 xisigr用户发现自己的路径下存在存储型XSS漏
洞,那么就可以在自己的blog中加入获取数据代码,其中核心代码为
localStorage.getItem(“name”)。xhack用户并不需要登录blog,他只要访问
http://h.example.com /xisigr,本地存储数据就会被获取到。
(5)、容易遭受DNS欺骗攻击
Google在没有使用HTML5本地存储前,是使用Google Gears方式来进行本地存储的,
那个时候Google Gears就遭到过DNS欺骗攻击。Google Gears支持离线存储,可以把
Gmail,WordPresss这样网站数据的以SQLite数据库的形式存储下来,以后用户就可以
对存储的网站数据进 行离线读取或删除操作。如果攻击者发动DNS欺骗攻击,那么就可
以注入本地数据库,获取数据或者留下永久的后门。这样将会造成对用户持久的危害。
Google Gears所遭受的DNS欺骗攻击方式在HTML5本地存储上也是同样有效的。
开扒本地存储—localStorage的更多相关文章
- 移动端浏览器隐私模式/无痕模式使用本地存储localStorage/sessionStorage的问题
移动端浏览器隐私模式/无痕模式使用本地存储localStorage/sessionStorage的问题 开发H5 webapp时经常需要使用本地存储,如localStorage和sessionStor ...
- html5的本地存储localStorage和sessionStorage
html5的本地存储localStorage和sessionStorage html5中新增的比较重要的一个功能就是web storage来实现客户端本地存储数据,之前存储数据都是用cookie来实现 ...
- 本地存储localStorage sessionStorage 以及 session 和cookie的对比和使用
cookie和session都是用来跟踪浏览器用户身份的会话方式. 1.验证当前服务中继续请求数据时,哪些缓存数据会随着发往服务器? 只有cookie中设置的缓存数据会发送到服务器端 2. 强调几点: ...
- 本地存储localStorage以及它的封装接口store.js的使用
本地存储localStorage以及它的封装接口store.js的使用 sublime-text chrome javascript readyGo 2016年11月20日发布 0 推荐 9 收藏 ...
- 本地存储 localStorage
本地存储localStorage 概念:window对象下面的属性,html5新增的,将5M大小的数据存储本地的浏览器上面. 浏览器支持存储5M大小 本地存储localStorage特点 本地存储属于 ...
- HTML5本地存储localStorage与sessionStorage
在最近的项目中用到了html5的本地存储,下面总结一下. 1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(applica ...
- HTML5 本地存储 LocalStorage
说到本地存储,这玩意真是历尽千辛万苦才走到HTML5这一步,之前的历史大概如下图所示: 最早的Cookies自然是大家都知道,问题主要就是太小,大概也就4KB的样子,而且IE6只支持每个域名20个co ...
- Cocos本地存储LocalStorage
HTML5 LocalStorage 本地存储 //存档 var stopResumeMenu4 = cc.MenuItemFont.create("存档", this.onSav ...
- HTML5本地存储localStorage与sessionStorage详解
前言 在最近的项目中用到了html5的本地存储,下面总结一下. 1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(appl ...
随机推荐
- JAVA开发:分享一些SpringMvc+Ibatis+spring的框架使用心得
近期不在做.net的项目,而是使用java作为开发语言,就想着要用springmvc开发了,由于前些年也用过struts1/2+hibernate/ibatis+spring开发过项目,因此是有些底子 ...
- [C#]Winform下回车或Tab键自动切换下一个控件焦点
满足用户体验,在数据录入时,能在输入完一个信息后通过回车或Tab键自动的切换到下一个控件(字段). 在界面控件设计时,默认可以通过设置控件的TabIndex来实现.但在布局调整时或者是对输入的内容有选 ...
- html 文件动态加载.PDI 流程图
1 //javascript脚本 <script> window.onload = function () { var aid = document.getElementById(&quo ...
- java调用peoplesoft提供的webservice接口
使用到了soapui,apache-cxf,eclipse 1.使用soapui测试提供的地址有效性(如果没有soapui也可以直接在cmd命令行中使用wsdl2java命令生成客户端代码) wsdl ...
- int/double/string使用
在计算机中存储数据和儿童在抽屉中存放物品很类似. 例如: 要在计算机中存一个数字50,需要两句话. int a; //将要放的物品告诉家长 a=50; //将物品放到某个抽屉中 计算机存储变量的过 ...
- Android EditText不弹出输入法焦点问题的总结
转自:http://mobile.51cto.com/aprogram-403138.htm 看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的 ...
- FileZilla ftp服务器安装
在官网下载server版本的FileZilla,我下载的是(The latest stable version of FileZilla Server is 0.9.41) 然后直接安装就可了,我由于 ...
- 模板:cin.getline用法
Ref: http://baike.baidu.com/view/2383876.htm 此函数会一次读取多个字符(包括空白字符).它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字 ...
- awk!字符问题,修复中!.......
awk '条件类型1{动作1} 条件类型2{动作2}' file1 file2 变量名称:1.NF 每一行($0表示文本所有域)拥有的字段数. 2.NR目前awk处理的"第n行"数 ...
- 在MAC OS X下安装usb转串口驱动(PL2303主控芯片)
本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重! 因为最近手里有一块STM32Discovery开发板,所以想搞一下STM32的开发,我前面的 ...