2012-02-19 10 views
2

HttpOnlyの場合、Javascript内にCookieが存在するかどうかを調べることができますか?私はそれの中の情報にアクセスする必要はありません、ただそれがあることを知っています。httponly cookieがJavascriptに存在するかどうか確認してください

もう少し情報があるのは、もともと認証トークンとしてCookieを使用していたWebサーバーがあり、それがクライアントによって使用されなかったためにhttponlyに設定されていたためです。

ただし、クライアントがCookieを持っているかどうかを知る必要がある場合(サイトがログインしていなくても動作できるようになりましたが、ログインしていれば

Webサーバーには他のセキュリティ対策が施されているため、クライアントが不正な認証Cookieを持っているような状況では害はありませんが、そのサイトはそのように見えます

+1

あなたに認証ステータスを伝えるために、サーバー側のコードを変更することはできませんページ作成の一環としてのクライアント? – Neil

+0

実際にサーバー側のコードはありません。純粋なhtml/javascriptのWebサイトで、ユーザーがログインしてlocalStorage以外の情報(Webサーバーが起動する場所)を維持できます。もともと、クライアントはサイトにアクセスする前にログインする必要がありましたが、ユーザーはlocalStorageを使用してログインせずにサイト全体を使用できるようになりました。クッキーが存在するかどうかを調べるこの呼び出しは、ログインしている場合にログインボックスまたはその他のリモート機能を表示することです。 – Grofit

答えて

4

いいえ、以下のRobのコメントを参照してください。

あなたはおそらくすでに見た、これを参照してください - http://en.wikipedia.org/wiki/HTTP_cookie#Secure_and_HttpOnly

アンHttpOnlyのCookieは、そのようなJavaScriptを(例えば、 "document.cookie" を参照)を介して 通話などの非HTTPメソッドを介してアクセスすることはできません...

編集:削除undefined応答、私はあなたがあなたが間接的にそれた場合にJavaScriptを使用して値を設定しようとすることで存在しているかどうかを確認することができます:)

+0

"これは' undefined'を返しますか?クッキーは、常に存在する文字列である 'document.cookie'によって得られます。 HttpOnlyクッキーは表示されませんが、明らかに「未定義」ではありません。 –

+0

アクセスして戻り値を取得しようとすると意味します。右? – Mike

+0

JavaScriptのクッキーは 'document.cookie'の文字列操作で取得する必要があります。例えば、 'document.cookie'は' value = woow%20;のように見えます。 value2 =別の%20woot'。キー名が 'value'のクッキーの値を見つけるには、(例)を使うことができます:' var test = /(?:;\s*|^)?woow=([^;]*)/.exec (document.cookie); 'クッキーが存在する場合、' test [1] 'で値を取得できます。 'test === null'でなければ' test [1] 'を実行しようとすると' null'エラーが発生します。 –

0

を使用することはできませんスクリプトを書きましたできないeを設定すると、HTTPのみのCookieが存在する必要があります(またはユーザーがCookieをブロックしています)。

function doesHttpOnlyCookieExist(cookiename) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (1000)); 
    var expires = "expires=" + d.toUTCString(); 

    document.cookie = cookiename + "=new_value;path=/;" + expires; 
    if (document.cookie.indexOf(cookiename + '=') == -1) { 
     return true; 
    } else { 
     return false; 
    } 
} 

は[UPDATE 2/6/18]これは、Firefoxで動作しない(クローム&エッジ、多分他人に動作します)

関連する問題