web-dev-qa-db-ja.com

ブラウザがCSRF攻撃に対抗するためにタブごとにCookieを制限しないのはなぜですか?

ブラウザーのタブ間でCookieが共有されるのはなぜですか?これを回避すると、Cookieベースの認証WebサイトでCSRFが防止されますか?認証なしで複数のタブからWebサイトに簡単にアクセスするために、タブ間でCookieを共有することは好まれますか?

4
ProgramCpp

そう、クッキーは「ブラウザのもの」...「タブのもの」ではありません。異なるタブの同じサイトへの複数のログインを優先することは、ほとんどの場合において利点です。

ええ、あなたは正しいです。「タブCookie」を使用するという架空のケースでは、CSRF攻撃は意味がありません。なぜなら、ご存じのように、クロスサイトリクエストフォージェリ攻撃は、

  • ユーザーは、ウェブサイトAにすでに既存のセッションを持っています。
  • 次に、おそらくWebサイトBまたは電子メールで悪質なリンクをクリックするか、別の要求が行われます(これは通常、他のタブで行われます)。被害者のブラウザ上のセッションまたはCookieが「悪意のあるアクション」を実行する。

ブラウザで個別のセッションが必要な場合は、プライベートブラウジングを使用するなど、そのための方法があります。これにより、セッション/ Cookieが他のセッションから分離されます。それは「ブラウザの他のインスタンス」のようなものですが、プライベートブラウジングのタブ間では、同じ方法でセッション/ Cookieを共有します。

それが役に立てば幸い。

2
OscarAkaElvis

ブラウザーのタブ間でCookieが共有されるのはなぜですか?

それはクッキーの目的全体を壊してしまうからです。

Cookieには3つのコンポーネントがあります。

  1. ドメイン
  2. 一部のデータ
  3. 有効期限

ブラウザはhttpリクエストを行うたびに、(ローカル)cookieデータベースをチェックして、リクエストのドメインと一致するドメインを持つcookieを探します。見つかった場合は、サーバーに送信します。

このメカニズムは、ステートレスなHTTPに永続性を提供するために構築されました。 Cookieがなければ、認証済みサイトへのすべてのリクエストでユーザー名とパスワードを提供する必要があります。

Cookieがウィンドウごとに変更されると、非常に多くのことがすぐに煩わしくなります。ブラウザーを開くたびに再度Amazonにログインする必要があるだけでなく、新しいタブで開くたびにログインする必要があります。これは、買い物が終わったときに以前のタブを閉じたためか、または、結果をタブで開いて比較するためです。

これを回避すると、Cookieベースの認証WebサイトでCSRFが防止されますか?

はい、CSRFに対抗します。そのタブに他のサイトからのCookieが残っているので、それは絶対確実ではありません。

このポリシーをユーザーに適用しようとした場合、ユーザーはすぐに何らかの回避策を見つけ、結果としてシステムのセキュリティが低下する可能性があります。

これを自分で行うためのブラウザプラグインを作成したい場合は...先に進んでください。しかし、ユーザーエクスペリエンスが非常に速くヒットしていることに気付くでしょう。