JavaScriptで安全なCookieを読み取る方法はありますか?
私はそれを使用してそれを試みました、document.cookie
そして私が安全なクッキーとHttpOnlyフラグについてのこの記事で見ることができる限り、私はこの方法で安全なクッキーにアクセスすることができません。
誰かが回避策を提案できますか?
JavaScriptで安全なCookieを読み取る方法はありますか?
私はそれを使用してそれを試みました、document.cookie
そして私が安全なクッキーとHttpOnlyフラグについてのこの記事で見ることができる限り、私はこの方法で安全なクッキーにアクセスすることができません。
誰かが回避策を提案できますか?
回答:
HTTPOnlyフラグが設定されている場合、ブラウザが異なれば、セキュリティ対策も異なります。たとえば、OperaとSafariは、javascriptがCookieに書き込むことを妨げません。ただし、すべての主要なブラウザの最新バージョンでは、読み取りは常に禁止されています。
しかし、もっと重要なのは、なぜHTTPOnly
クッキー を読みたいのですか?開発者の場合は、フラグを無効にして、コードでxssをテストしてください。可能な限り、このフラグを無効にしないことをお勧めします。HTTPOnly
フラグと「安全なフラグが」(HTTPSを介して送信するクッキーを強制する)は常に設定する必要があります。
攻撃者の場合は、セッションを乗っ取る必要があります。しかし、HTTPOnly
フラグにもかかわらず、セッションをハイジャックする簡単な方法があります。セッションIDがわからなくても、セッションに乗ることができます。MySpaceのサミーのワームはまさにそれをやりました。XHRを使用してCSRFトークンを読み取り、承認されたタスクを実行しました。したがって、攻撃者は、ログに記録されたユーザーが実行できるほとんどすべてのことを実行できます。
人々はHTTPOnly
旗を信じすぎていますが、XSSは依然として悪用される可能性があります。機密性の高い機能の周囲にバリアを設定する必要があります。提出されたパスワード変更などでは、現在のパスワードが必要です。管理者が新しいアカウントを作成するには、キャプチャが必要です。キャプチャは、XHRでは簡単にバイパスできないCSRF防止手法です。
HttpOnly Cookieの要点は、JavaScriptからアクセスできないことです。
スクリプトがそれらを読み取る唯一の方法(ブラウザーのバグの悪用を除く)は、サーバー上にCookie値を読み取り、応答コンテンツの一部としてエコーバックする協調スクリプトを用意することです。しかし、それが可能であり、そうするのであれば、そもそもなぜHttpOnlyCookieを使用するのでしょうか。