.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的更多相关文章

  1. 移动端浏览器隐私模式/无痕模式使用本地存储localStorage/sessionStorage的问题

    移动端浏览器隐私模式/无痕模式使用本地存储localStorage/sessionStorage的问题 开发H5 webapp时经常需要使用本地存储,如localStorage和sessionStor ...

  2. html5的本地存储localStorage和sessionStorage

    html5的本地存储localStorage和sessionStorage html5中新增的比较重要的一个功能就是web storage来实现客户端本地存储数据,之前存储数据都是用cookie来实现 ...

  3. 本地存储localStorage sessionStorage 以及 session 和cookie的对比和使用

    cookie和session都是用来跟踪浏览器用户身份的会话方式. 1.验证当前服务中继续请求数据时,哪些缓存数据会随着发往服务器? 只有cookie中设置的缓存数据会发送到服务器端 2. 强调几点: ...

  4. 本地存储localStorage以及它的封装接口store.js的使用

    本地存储localStorage以及它的封装接口store.js的使用 sublime-text chrome javascript readyGo 2016年11月20日发布   0 推荐 9 收藏 ...

  5. 本地存储 localStorage

    本地存储localStorage 概念:window对象下面的属性,html5新增的,将5M大小的数据存储本地的浏览器上面. 浏览器支持存储5M大小 本地存储localStorage特点 本地存储属于 ...

  6. HTML5本地存储localStorage与sessionStorage

    在最近的项目中用到了html5的本地存储,下面总结一下. 1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(applica ...

  7. HTML5 本地存储 LocalStorage

    说到本地存储,这玩意真是历尽千辛万苦才走到HTML5这一步,之前的历史大概如下图所示: 最早的Cookies自然是大家都知道,问题主要就是太小,大概也就4KB的样子,而且IE6只支持每个域名20个co ...

  8. Cocos本地存储LocalStorage

    HTML5 LocalStorage 本地存储 //存档 var stopResumeMenu4 = cc.MenuItemFont.create("存档", this.onSav ...

  9. HTML5本地存储localStorage与sessionStorage详解

    前言 在最近的项目中用到了html5的本地存储,下面总结一下. 1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(appl ...

随机推荐

  1. sort排序中的坑

    问题的产生原因: 在一篇阿里面试题的跟帖中,很多人应用sort()方法对数组进行排序.看似合情合理的代码,运行结果却频频出错.为什么呢?因为很多人都忽略掉了一点,那就是sort()排序默认情况下是按A ...

  2. 【AngularJs】---$sce 输出Html

    [问题描述] angular js的强大之处之一就是他的数据双向绑定功能----->ng-bind和针对form的ng-model 但在我们的项目当中会遇到这样的情况,后台返回的数据中带有各种各 ...

  3. 会话—cookie

    什么是会话?       会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话过程中要解决的一些问题?       每个用户在使 ...

  4. ASP.NET下运用Memcached

    对于大型网站的高并发,在ASP.NET网站下的session性能并不高,所以造成人们一种印象,大型WEB项目使用JAVA的错觉,致使很多人吐槽微 软不给力,其实这好比拉不出怪地球引力,本文介绍Memc ...

  5. Swing圆角边框的实现

    Swing圆角边框的实现方法: package com.justplay.basic; import java.awt.Color; import java.awt.Component; import ...

  6. JSON解析例子

    //解析的东西是数组就用数组接受,是字典就用字典接受 //my.h#ifndef __1_Header_h#define __1_Header_h#define DEBUG 1#define aa 1 ...

  7. C# @符号的多种使用方法

    1.限定字符串用 @ 符号加在字符串前面表示其中的转义字符“不”被处理.如果我们写一个文件的路径,例如"D:/文本文件"路径下的text.txt文件,不加@符号的话写法如下:str ...

  8. (转)IDG副总裁楼军:顶级VC青睐什么样的创业者

    学习能力是创业者的第一能力 创业者首先要有格局观和很强的学习能力. 具体什么意思?比如说去年IDG投了一个做C2C平台的海淘项目,创始人之前其实是帮他爱人做海淘代购.他爱人是一个代购买手,赚得还不错, ...

  9. 用angular实时获取本地localStorage数据,实现一个模拟后台数据登入的效果

    研究了一上午,终于做出了,实时获取本地localStorage来模拟注册登入~~~ <!DOCTYPE html><html><head lang="en&qu ...

  10. CSS Sprites优点

    在分析各个网站的CSS时,我们经常可以看到一些网站有很多的元素共享了一张背景图片,而这张背景图片包含了所有这些元素需要的背景,这种技术就叫做CSS Sprites. 例如淘宝的css sprites ...