web-dev-qa-db-ja.com

JavaScriptを使用してHTTPのみのCookieを読み取る方法

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

誰かが私に回避策を提供できますか?

73
tzam

異なるブラウザ HTTPOnlyが設定されている場合に異なるセキュリティ対策を有効にする フラグが設定されます。たとえば、OperaおよびSafariは、JavaScriptによるCookieへの書き込みを妨げません。ただし、すべての主要なブラウザーの最新バージョンでは、読み取りは常に禁止されています。

しかし、もっと重要なのはなぜHTTPOnlyクッキーを読みたいですか?開発者の場合は、フラグを無効にして、 xssのコードをテストする を確認してください。可能であれば、このフラグを無効にしないことをお勧めします。 HTTPOnlyフラグと「セキュアフラグ」(Cookieをhttps経由で強制的に送信する)は常に設定する必要があります。

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

人々はHTTPOnlyフラグを信頼しすぎています。 XSS は依然として悪用可能です。デリケートな機能の周りに障壁を設定する必要があります。パスワード変更フィールドなどには、現在のパスワードが必要です。管理者が新しいアカウントを作成するには、キャプチャが必要です。これは CSRF防止技術 で、これは XHR では簡単にバイパスできません。

97
rook

HttpOnly Cookieの重要な点は、JavaScriptからアクセスできないことです。

スクリプトがそれらを読み取るための唯一の方法(ブラウザのバグの悪用を除く)は、Cookie値を読み取り、応答コンテンツの一部としてエコーバックする協調スクリプトをサーバー上に保持することです。しかし、それが可能だとしたら、そもそもなぜHttpOnly Cookieを使用するのでしょうか?

40
Ilmari Karonen