[JavaScript]Cookie、local Strage、session Strage概要

4256 ワード

Cookie
Cookieはいくつかのデータで、あなたのコンピュータの上のテキストファイルの中で保存して、ウェブサーバがブラウザーにウェブページを送信する時、接続が閉じた後に、サービス端末はユーザーの情報を記録しません.Cookieの役割はwebページのユーザ情報を記憶することです.
javascriptでは、document.co okie属性を使用してクッキーの作成/読み込み/削除を行います.
//  
allCookies = document.cookie;
//  
document.cookie = newCookie;
//  ,   expires        
document.cookie="hello=world; expires=Thu, 18 Dec 2043 12:00:00 GMT;"
Cookieの属性値
  • path=path(例えば'/'、'/mydir')が定義されていない場合、デフォルトは現在の文書位置のパスです.
  • domain=domain(例えば、「example.com」、「subdomann.example.com」)が定義されていない場合、デフォルトは現在のドキュメント位置のパスのドメイン名部分です.初期の仕様とは逆に、ドメイン名の前に文字を入れると無視されます.ブラウザはこのようなクッキーの設定を拒否するかもしれません.ドメインが指定されていれば、サブドメインも含まれます.
  • max-age=max-age-inn-seconds(例えば、1年は606024*365)
  • expires=date-i-GMT String-formatが定義されていない場合、cookieはセッション終了時に期限が切れます.この値のフォーマットはDate.toUTCString()
  • を参照してください.
  • secure(cookieはhttpsプロトコルのみで伝送されます)
  • cookieの値文字列は、コンマ、セミコロン、またはスペースを含まないことを保証するために、encodeURIComponent(cookie値でこれらの値を使用することが禁止されている)を使用することができます.
    ブラウザの個数制限
  • IE 6または下位のバージョンは、最大20個のクッキー
  • である.
  • IE 7およびその後のバージョンは、最後に50個のクッキーを持つことができる.
  • Firefox最大50個のクッキー
  • chromeとSafariはハードリミットをしていません.
    Cookieの欠点
  • Cookieの数と長さの制限.各domainは最大20個のcookieしかありません.各cookieの長さは4 KBを超えてはいけません.そうでなければ、遮断されます.
  • 安全性の問題.クッキーがブロックされたら、その人はすべてのセッション情報を得ることができます.暗号化しても問題にはならないです.遮断者はクッキーの意味を知る必要がないからです.彼はクッキーをそのまま転送すれば目的を達成できます.
  • は、クライアントに保存できない状態がある.例えば、フォームの重複提出を防止するために、サーバー側にカウンターを保存する必要があります.このカウンターをクライアントに保存すると、何の役にも立たないです.
  • Cookieの安全問題
    パス制限は、他の経路からのクッキーへのアクセスを阻止することはできません.簡単なDOMを使用すると、簡単に制限パスを回避することができます.(例えば、隠しiframeを作成し、その後、そのcontent Docment.co okie属性にアクセスする).クッキーを不正アクセスしないように保護する唯一の方法は、他のドメイン名/サブドメイン名の下に置くことです.同ソースポリシーを利用して、読み取られないように保護します.Webアプリケーションは、一般的に、ユーザーIDおよび彼らのログインセッションを識別するために、cookieを盗聴することによって、ログインしたユーザのセッションをハイジャックすることができます.盗聴するクッキーの一般的な方法は、社会工学とXSS攻撃を含みます.
    安全問題解決の提案
  • は、良好なプログラミングにより、cookieに保存されたsessionオブジェクトのサイズを制御する.
  • は、暗号化およびセキュリティ伝達技術(SSL)により、クッキーが解読される可能性を低減する.
  • は、クッキーに敏感でないデータだけを保管しています.盗まれても大きな損失はありません.
  • cookieの生命期間を制御して、永遠に有効にしないようにします.盗難者は期限切れのクッキーを手に入れる可能性が高いです.
  • local Strageとsession Strage
  • 戻り値はStrageオブジェクトであり、記憶されているデータ項目
  • を追加、修正、削除することができる.
  • はローカルにのみ格納され、local Strageとsession StrageのデータはHTTP要求に従ってサーバに送信されません.クッキーは
  • を送信します.
  • データは、いずれもページのプロトコル
  • に特定されています.
  • local Strageとsession Strageのキーペアは、常に文字列として記憶されている.(キーペアは常に文字列として記憶され、数値タイプは文字列タイプに自動的に変換される)
  • local Strageとsession Strageは爬虫類に捕まえられません.
  • 別のブラウザでは、locastrageまたはsession Storrageの情報を共有できません.
  • は同じブラウザの異なるページ間で同じlocal Strageを共有することができますが、異なるページやタブページ間でsession Strageの情報を共有することができません.
  • 各ブラウザでサポートされているlocastrageとsession Storrageの容量の上限は異なり、最低でも1 m以上のsupport-test
  • にあります.
    local Strageとsession Strageは違います.
  • local Strage属性は、DockmentソースのオブジェクトStrageにアクセスすることができます.session Storrage属性は、session Strageオブジェクト
  • にアクセスすることができます.
  • session Storrageに格納されているデータは、ページセッション終了時にクリアされます(ページセッションはブラウザが開いている間は維持されています.ページを再読み込みまたは再開しても、元のページセッションが維持されます).ブラウザを閉じるとクリアされます.locastrageに保存されているデータは、ブラウザ間のセッションで保留されます.local Strageに格納されたデータは長く
  • を保持することができます.
    local Strageとsession Strageの方法
  • key()この方法は、パラメータとして値nを受け取り、記憶中のn番目のキー名(Strageの方法)
  • を返す.
  • setItem(key,data)この方法は、キー名をパラメータとして受け入れ、キー名に対応する値
  • を返します.
  • getItem(key)この方法は、キーパッドと値をパラメータとして受け入れ、キーパッドのペアを記憶に追加します.キーパッドが存在すると、対応する値
  • を更新します.
  • removeItem(key)この方法は、キー名をパラメータとして受け入れ、キー名を記憶から削除します.
  • clear()を呼び出します.この方法は、記憶中のすべてのキー名
  • をクリアします.
    session Strageの使用(local Strageはほぼ同じです.)
    function initSession() {
        sessionStorage.clear();
    }
    
    function getSession(name) {
        if (sessionStorage.getItem(name)) {
            return JSON.parse(sessionStorage.getItem(name));
        }
    }
    
    function setSession(name, data) {
        var store = sessionStorage.getItem(name);
        if (store) {
            console.warn(name + "=>   sessionStorage   ,      ");
            sessionStorage.removeItem(name);
        }
        sessionStorage.setItem(name, JSON.stringify(data));
    }
    
    //sessionStorage           (    )   ,                   
    export { initSession, getSession, setSession };
    Docs
    MDN-document.co okie MDN-local Strage MDN-session Strage MDN-Strage Cookies and Security JavaScript Cookie