ローカルストレージのスリープ:localStorage

6289 ワード

.localStorageとは
localStorageは、アクティブにデータを削除しない限り、永続化されたローカルストレージに使用されます.データは期限切れになりません.
 
のです.
 
2.localStorageのメリット
 
1). きおくくうかん
 
ストレージスペースがもっと大きい:IE 8の下でそれぞれ独立したストレージスペースは10 Mで、その他のブラウザの実現は少し異なって、しかしすべて
 
Cookieはずっと大きいです.
 
2).サーバ
 
ストレージコンテンツはサーバに送信されません:Cookieが設定されている場合、Cookieのコンテンツはリクエストとともに送信されます.
 
サーバは、ローカルに格納されているデータに対して帯域幅の浪費です.Web Storageのデータは保存のみ
 
ローカルでは、サーバとのインタラクションは発生しません.
 
3).インタフェース
 
より豊富で使いやすいインタフェース:Web Storageはより豊富なインタフェースを提供し、データ操作をより簡単にします.
 
便.
 
4). きおくくうかん
 
独立したストレージスペース:各ドメイン(サブドメインを含む)には独立したストレージスペースがあり、各ストレージスペースは完全に独立しています.
 
のため、データが混乱することはありません.現在のWebページまたはブラウザをオフにしてからアクセスすると、localStorage
 
のデータはまだ存在します.では、このデータはどこにあるのでしょうか.
 
検索するとChrome Browserの場合、デフォルトでは次のアドレスが存在します.C:/Documents and Settings/UserName/LOcal Settings/Application Data/Google/Chrome/User Data/Default/LOcal Storage
 
3.適用ブラウザ
 
Chrome 4+はlocalStorageFirefox 3のサポートを開始しました.5+localStorageFirefox 1のサポートを開始します.5+globalStorageIE 8+localStorageIE 7対応モードlocalStorageIE 5をサポートする.5+userdataSafari 4+localStorageOpera 10をサポートする.5+サポートlocalStorageNetscape Navigator最終版(9.0.0.6)サポートlocalStorage、残りのバージョンは未測定
 
現在主流のブラウザはie 6,ie 7を除いてすべてlocalstorageを支持して、支持することができるのはlocalstorageで、支えません
 
持っているものはクッキーで代用します(ただしそれはお勧めしません)
 
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.IE 6-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)、厳格に入出力を濾過する
 
ローカルストレージでは、データの再ロードを容易にするために、ローカルにデータを格納することがよくあります.再読み込み時
 
など、ローカルから直接データを読み込んでWebページに表示します.場合によっては、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脆弱性の詳細は次のとおりです.
 
狂点查看demo  wooyun-2010-03075.Twitterという抜け穴は
 
使用するのは非常に困難ですが、すべての入出力が有害であるという原則に基づいて、データを入力することをもう一度教えてくれました.
 
行の厳格な入出力フィルタリング.
 
(3)、クロスディレクトリ攻撃を受けやすい
 
localStroageストレージ方式はCookieストレージのようにドメイン内のパスを指定することはできません.localStroageストレージでは
 
ストレージ方式にはドメインパスの概念はありません.すなわち,1つのドメインの下の任意の経路にXSSホールが存在する場合,全体として
 
ドメインに格納されているデータは、格納名がわかっている場合に取得できます.
 
次の2つのリンクがlocalStorageを使用してデータを格納するとします.
http://h.example.com/xisigr
http://h.example.com/xhack
 
ユーザーxisigrとxhackのそれぞれのblogリンクは同じドメインに属しているが、異なるパスがあり、1つのパスは
 
xisigr、もう一つのパスはxhackです.xisigrユーザが自分の経路の下にストレージ型XSS漏れがあることを発見したと仮定する
ホールでは、自分のblogに取得データコードを加えることができ、コアコードは
localStorage.getItem(“name”).xhackユーザーはblogにログインする必要はありません.彼はアクセスするだけです.
http://www.wooyun.org/bugs//xisigrでは、ローカルストレージデータが取得されます.
(5)、DNS詐欺攻撃を受けやすい
GoogleはHTML 5のローカルストレージを使用する前にGoogle Gears方式でローカルストレージを行い、
その時、Google GearsはDNS詐欺攻撃を受けたことがある.Google Gearsはオフラインストレージをサポートし、
Gmail,WordPresssのようなサイトデータはSQLiteデータベースとして保存されており,後でユーザが
保存されたWebサイトのデータをオフラインで読み取りまたは削除します.攻撃者がDNS詐欺攻撃を発動すれば
http://h.example.comに注入し、データを取得したり、永続的なバックドアを残したりします.これにより、ユーザーに永続的な危害を及ぼすことになります.
Google Gearsが受けたDNS詐欺攻撃方式は、HTML 5のローカルストレージでも同様に有効です.