ローカルストレージのスリープ: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.適用ブラウザの判断
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ソリューション
オリジナルlocalStorageのすべてのメソッドはサポートされず、4で拡張されたカスタムメソッドのみがサポートされます.
7.ローカルストレージセキュリティ
(1)、機密情報を保存しないこと;
(2)、厳格に入出力を濾過する
ローカルストレージでは、データの再ロードを容易にするために、ローカルにデータを格納することがよくあります.再読み込み時
など、ローカルから直接データを読み込んでWebページに表示します.場合によっては、localStorageストレージで
データを書き込んだり読み込んだりする際に、入出力によって厳密にフィルタリングされていない場合は、これらのデータが容易に
HTMLコードとして解析され、XSS攻撃が発生する.
TwitterではlocalStorage XSSの脆弱性が発生しました.サブホールがトリガーされる条件は、Twitterの個人用ページで
上で次のストレージコードを実行すると、個人用ページを開くたびに/xss/ボックスがポップアップされます.
このコードから、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のローカルストレージでも同様に有効です.
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のローカルストレージでも同様に有効です.