2011-11-09 9 views
50

javascriptで安全なクッキーを読み取る方法はありますか?私はdocument.cookieを使ってそれをやろうとしましたが、ここまで見るとhttp://securitymusings.com/article/909/secure-cookies-the-httponly-flag私はこの方法で安全なクッキーにアクセスできません。JavaScriptを使用して安全なクッキーを読み取る方法

私は回避策を提供できますか?

+1

[wiki](http://en.wikipedia.org/wiki/HTTP_cookie)から:安全なCookieは、ブラウザがHTTPS経由でサーバーにアクセスしている場合にのみ使用されます。 –

+3

@Pavel Hodekこれは間違ったフラグです。 「安全な」クッキーフラグは、HTTPOnlyセキュリティフラグとは関係ありません。彼らはひどい命名システムを持っています。 – rook

答えて

68

異なるブラウザenable different security measures when the HTTPOnlyフラグが設定されています。たとえば、OperaとSafariはJavaScriptがCookieに書き込まれることを防ぎません。しかし、すべての主要なブラウザの最新バージョンでは常に読書が禁止されています。

さらに重要なのはなぜHTTPOnlyクッキーを読んでみませんか?開発者の場合は、フラグを無効にして、test your code for xssを確認してください。可能であれば、このフラグを無効にすることを避けることをお勧めします。 HTTPOnlyフラグと "secure flag"(Cookieをhttpsで強制的に送信する)は常に設定する必要があります。

攻撃者がの場合は、にセッションをハイジャックします。しかし、HTTPOnlyフラグにもかかわらず、セッションをハイジャックする簡単な方法があります。セッションIDを知らなくてもセッションに乗ることができます。 MySpace Sammy wormはそれだけでした。 XHRを使用してCSRFトークンを読み取り、承認されたタスクを実行しました。したがって、攻撃者は、ログに記録されたユーザーが行うことができるほとんどすべての操作を行うことができます。

人々はHTTPOnlyフラグを信用しすぎているため、XSSは依然として悪用可能です。機密機能の周りに障壁を設定する必要があります。そのような変更パスワードは、現在のパスワードを要求する必要があります。管理者が新しいアカウントを作成するには、XHRで簡単にバイパスできないCSRF prevention techniqueのキャプチャが必要です。

+0

あなたはワームのことを詳しく教えていただけますか?そのリンクはうまくいかず、インターネットからも多くのことを理解していませんでした。ありがとうございました。 –

+0

@Abhishek JebarajあなたがサミーのワームやCSRFトークンを理解できない場合は、最初に[同じ起源のポリシー]の制限を理解してください(https://developer.mozilla.org/en-US/docs/Web /セキュリティ/ Same-origin_policy) – rook

27

HttpOnly Cookieの全ポイントは、JavaScriptによってアクセスできないことです。

あなたのスクリプトがそれらを読むための唯一の方法(ブラウザのバグを悪用することを除く)は、クッキー値を読み取って応答コンテンツの一部として戻す協調スクリプトをサーバー上に持つことです。しかし、もしあなたがそれを行うことができ、それを行うなら、なぜ最初にHttpOnlyクッキーを使うのですか?

+0

これは1つである必要があります。 – steo

+0

ユーザーが特定のブラウザからサイトを使用できるようにする前に、ユーザーブラウザがCookieのHttpOnlyを適切に処理するかどうかを調べることができます。私はHttpOnlyフラグのブラウザのサポートを保証することができる例を探しています。 MSも同様に勧告していますが、その方法についてのアドバイスはありません。[HttpOnlyでXSSを軽減する](https://msdn.microsoft.com/en-us/library/ms533046.aspx#httponly) – Ursegor

+0

アドバイスブラウザバージョンホワイトリスト。私は間違っているかもしれないが、代わりにjavascriptからのサポートをチェックする便利な方法ではないだろうか?あなたはこれについてドローバックを提案できますか? – Ursegor