JavaScriptを使用してHttpOnlyCookieを読み取る方法


90

JavaScriptで安全なCookieを読み取る方法はありますか?
私はそれを使用してそれを試みました、document.cookieそして私が安全なクッキーとHttpOnlyフラグについてのこの記事で見ることができる限り、私はこの方法で安全なクッキーにアクセスすることができません。

誰かが回避策を提案できますか?


1
ウィキから:安全なCookieは、ブラウザがHTTPS経由でサーバーにアクセスしている場合にのみ使用されます。
Pavel Hodek 2011年

6
@PavelHodekそれは間違ったフラグです。「安全な」Cookieフラグは、HTTPOnlyセキュリティフラグとは何の関係もありません。彼らはひどい命名システムを持っています。
ルーク2011年

1
この質問のタイトルは、「HttpOnly」フラグを含むように変更する必要があります。現状では、質問は「セキュア」フラグに関するもののようです。
トム

回答:


125

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

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

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

人々はHTTPOnly旗を信じすぎていますが、XSSは依然として悪用される可能性があります。機密性の高い機能の周囲にバリアを設定する必要があります。提出されたパスワード変更などでは、現在のパスワードが必要です。管理者が新しいアカウントを作成するには、キャプチャが必要です。キャプチャは、XHRでは簡単にバイパスできないCSRF防止手法です。


ワームについて詳しく教えていただけますか?そのリンクは機能せず、インターネットからもあまり理解していませんでした。ありがとうございました。
Abhishek Jebaraj 2017年

@Abhishek Jebarajサミーワーム、またはCSRFトークンを理解していない場合は、最初に同一生成元ポリシーの
2017年

httpのみのCookieの有効期限を取得したいのですが、どうすればよいですか
PirateApp

50

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

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


ユーザーが特定のブラウザーからサイトを使用できるようにする前に、ユーザーのブラウザーがCookieのHttpOnlyを適切に処理するかどうかをテストすることをお勧めします。HttpOnlyフラグのブラウザサポートを保証できる例を探しています。MSもそうするようにアドバイスしていますが、その方法についてはこれ以上のアドバイスはありません。HttpOnlyによるXSSの緩和
Ursegor

私は彼らがブラウザバージョンのホワイトリストをアドバイスしているのを見つけました。私は間違っているかもしれませんが、代わりにjavascriptからのサポートを確認するのに便利な方法ではないでしょうか?これについてドローバックを提案できますか?
Ursegor 2017年

-7

方法の1つは、Safari Webインスペクターを使用することです。[ストレージ]タブでは、httpOnlyかどうかに関係なく、すべてのCookieを表示し、CookieのCommand + Cを選択するだけでコピーできます。

文字列を取得したら、CookieパーサーまたはプレーンJavaScriptを使用して簡単に解析し直すことができます。

ここに画像の説明を入力してください


1
FFとChromeもこれを行うことができます。それらはOPが望んでいるものと同じものではありません。
IMBA-TJD

@ imba-tjdそうですね、でも当時はSafariを使っていたので、それを保証することができました。
pankajdoharey

これは、「ユーザー入力を取得するにはどうすればよいですか」と尋ねる人に、「質問してからコードに設定するだけ」と答えるようなものです。
フォーラム参加者
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.