問題タブ [csrf-protection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 複数のタブとの CSRF トークンの衝突
ページの読み込みごとにランダムなトークンを生成し、それをセッションに入れ、トークンを次のようにタグ属性にバインドするだけで、アプリケーションにCSRF保護を構築しました。<body>
次に、すべてのフォーム アクションまたは ajax リクエストで、body タグからトークンを取得して送信します。
大きな問題を除けば、これはうまく機能します。ユーザーがアプリケーションの複数のタブを開いており、トークンの衝突が発生しています。たとえば、ユーザーが最初のページをロードしてトークンを生成し、次にタブを切り替えて別のページをロードすると、新しいトークンが生成されます。最後に、最初のページに戻り、フォーマット アクションを送信します。これにより、無効な CSRF トークン エラーが発生します。
可能な限り安全に保ちながら、複数のタブとの衝突を防ぐためにこれを再構築する最良の方法は何ですか?
ページの読み込みごとに新しいトークンを生成するのではなく、ログイン時に単一のトークンを生成するだけで正しい解決策ですか?
asp.net-mvc - WebAPI の条件付き FilterProvider
CSRF 保護を実装したい ASP.NET MVC / WebAPI / AngularJS アプリケーションがあります。これについていくつかの優れた解決策を見つけましたが、パズルのピースが 1 つ欠けています。カスタム AuthorizationAttribute を API の安全でないメソッド (POST、PUT など) に自動的に適用できるようにしたいと考えています。誰かが助けてくれることを願っています。
MVC 側では、ValidateAntiForgeryToken 属性をすべての POST メソッドに適用するように構成されたPhil Haacked の ConditionalFilterProviderと組み合わせて MVC AntiForgeryToken を使用しています。テクニックはこの投稿で説明されています。ConditionalFilterProvider のコードを以下に示します。
WebAPI については、AngularJS の CSRF 保護メカニズムを使用しており、サーバー上で簡単に実装できるようにいくつかのヘルパー クラスでパッケージ化し、ここで説明されているようにカスタム AuthorizeAttribute で API メソッドを装飾しています。
これはすべて意図したとおりに機能しますが、さらに一歩進めたいと思います。MVC コントローラーで使用されるパターンに従って、WebAPI コントローラーで使用できる ConditionalFilterProvider を作成して、すべての POST メソッドがカスタムの AuthorizeAttribute で自動的に装飾されるようにします。
ただし、WebAPI 用の ConditionalFilterProvider の作成に苦労しましたが、それが正しいかどうか確信が持てず、登録方法がわからないためテストできません。私が思いついたのは次のとおりです。
そして、それを Application_Start に登録するには (これは機能しません):
php - csrf 攻撃からフォームを保存するにはどうすればよいですか?
私はこのフォームを持っています
トークンはすべてのユーザーに固有です。ここで、攻撃者がログインしてこのページを開いたとします。これで、攻撃者が認証トークンを持っている上の値をコピーすることで、現在のセッション トークンが何であるかがわかります。彼は私のサイトを簡単に攻撃できます。この手順は csrf 攻撃をどのように防ぎますか?
django - csrf_exemptがdjango認証で機能しない
私はモバイルアプリのバックエンドを作成しており、Django と Userena を使用してユーザー管理を行っています。Django REST フレームワークを使用してサインインとサインアップを行ったところ、すべて正常に動作しました。私が今しなければならないことは、「パスワードを忘れる」機能を実装することだけです。Userena で既に実装されているものを使いたかったのですが、deectorator を使用しても「CSRF トークンが見つからないか、正しくありません」というエラーが解消されませんcsrf_exempt
。私は何をしているのですか?
urls.py
password_reset_form.html
csrf - セッション トークンを使用した CSRF 保護の実装
新しいプロジェクトに CSRF 保護を実装しようとしていました。すべてのフォームにセッショントークンを作成して同じことを行い、トークンはフォームの非表示フィールドに保存されます。フォームが送信されるたびに、POST のトークンとセッションのトークンが同じかどうかを確認します。それらが同じである場合、必要なアクションが実行され、セッション トークンが更新されます。
うまく機能しますが、送信されたページを更新すると実際の問題が発生します。その後、トークンの不一致が発生します。
私の質問は、フォームごとに単一のトークンを使用し、フォーム送信ごとにトークンを更新せずに安全ですか? これで CSRF を防ぐことができますか?