私はDjangoでWebアプリケーションを作成しています。これにより、セッションのCSRFトークンが生成され、含まれます(Djangoセッションは匿名または登録済みユーザーです)。ログインおよびログアウトアクションを処理するコントローラーに対するCSRF保護?
おそらく、あなたは Login CSRF から保護する必要があります。この保護がなければ、攻撃者はCSRF攻撃を効果的に元に戻すことができます。被害者が自分のアカウントにログインしており、攻撃者が被害者のCookieを使用してサイトにリクエストを送信することによりセッションに乗ろうとするのではなく、攻撃者の資格情報でサイトにログインして、攻撃者がリクエストへのリクエストを効果的にハイジャックできるようにします。被害者が匿名または自分のアカウントの下にあると考え、攻撃者のアカウントに送信したドメイン。もちろん、これが特定のサイトに関連するかどうかは、サイトの性質と、このようなものが攻撃者にとって有利かどうかによって異なります。例としては、検索エンジンに対するログインCSRF攻撃があり、攻撃者は、被害者のアカウントではなく、攻撃者のアカウントでログに記録されているため、検索されている用語を確認できます。
このタイプの攻撃の主なターゲットは、認証されたアクションがメインアプリケーション自体の外部で実行される可能性があることです。例えば別のサイトに埋め込まれたブラウザのプラグインまたはウィジェットから。これは、これらのアクションがCookieを使用して認証されるためであり、攻撃者がそれらとしてログインした場合、各アクションはアカウントに記録されます。
また、ログアウトメカニズムをCSRFから保護する必要があります。最初、攻撃者ができることはユーザーをログアウトすることだけですが、これは最悪の場合は迷惑です。ただし、これをフィッシング攻撃と組み合わせると、攻撃者は被害者に独自のフォームを使用して再ログインするように誘導し、資格情報を取得できる可能性があります。 最近の例についてはこちらをご覧ください-LostPass 。
ログインする?はい。ログアウト?番号。
ログインする理由この面白いCSRFログイン攻撃があり、攻撃者は攻撃者が制御するアカウントで被害者にログインし、「そのアカウントでログインしている間に被害者が作成したコンテンツを制御する」ことができます。影響はかなり貧弱なIMOですが、よりジューシーな攻撃ベクトルがなくなったため、これは問題としてこれを認識し始めました。 ;-)
なぜログアウトしないのですか?セキュリティへの影響はありません。できる最善の方法は、システムから誰かをログアウトさせることです。
[〜#〜] edit [〜#〜]:ログアウトCSRF攻撃にセキュリティ上の影響はありませんそれ自体。これを多段階の攻撃で使用して、まず誰かをログアウトさせ、次になりすましのページにログインするように促す場合があります。
ログアウト時のCSRF保護は必須です!
どうして?次のシナリオを想定します。
ログアウトのCSRFトークンは、この混乱を防いでいました。
ログアウトとログインCSRFは実際には非常に悪用可能です。
永続的なプライベート/セルフXSS(ユーザー設定のような安全でないプライベートフィールドなど)を取得する方法を見つけた場合、被害者を強制的にログアウトし、セルフXSSが適用されたアカウントでログインして、いくつかのコードを実行できます。フィッシング攻撃を行うには有効なSSL証明書を持つ正しいドメイン上にある場合を除く。ユーザーがログインしている場合(または送信がヒットする前に資格情報を盗むことができる自動入力があり、自動ログインしているため、ページが白く点滅し、ユーザーが期待する場所にいる場合)彼らのパスワードと同じOriginの実行を持っています。次に、プライベート設定でエクスプロイトの永続性を実行し、ユーザーアカウントで永続的なリモートJS実行を実行します。
これは非常に大きな攻撃を可能にします。多くの開発者はプライベートフィールドでのHTMLインジェクションの悪用を両方とも行わないため、ユーザーだけがそれを見ることができ、自分に対してコードを実行する理由がないためです。ログインログアウトCSRFエクスプロイトを使用すると、同じOriginフィッシングを実行できます。同じOrigin iframeが有効になっている場合は、ログインページを全画面に埋め込んで、正当と思われるiframe内に必要なコードを実行することもできます。
バグだけでも、役に立たないものからせいぜい迷惑なものまでさまざまですが、これら2つがあれば(そして常にそうすることをお勧めします)、攻撃者は1つの厄介な広告だけでユーザーアカウントを乗っ取ることができます。
ログイン用のCSRFは一般的にはいですが、アプリケーションによって異なります。攻撃者は、Googleなどの悪意のあるアカウントにあなたをログインさせ、すべてのサイト訪問を監視することができます。
ログアウトのためのCSRF-はい、DOSを完全に防ぐことができます