同期トークンパターンでは、常にCSRFトークンが隠しフィールドまたはURLに表示されます。それをAjaxの投稿要求の最後に添付し、サーバーがそれを使用する必要があるかどうかを決定させるのは安全ですか?それはなぜ人々はそれをしないのですか?CSRF同期トークン
答えて
簡単な答えは、リクエストが別の発信元によって行われた場合(つまり、Cookieに含まれていない場合)、ブラウザによって自動的に送信されない限り、シンクロナイザトークンパターンでトークンをどのように送信するかは関係ありません)。ですから、「Ajaxの投稿要求の最後に添付してもいいですか」(しかし、私はそれがあなたが何を意味するのかはよく分かりません:))。
ajax呼び出しのない伝統的なフォームアプリケーションについては、隠れたフォームフィールドが最も便利な方法です。それぞれのフォームの隠しフィールドにトークンを置くだけで、クライアント上で何もできません。簡単です。
Ajaxはランドスケープを変更し、Ajaxコールは自動的にトークンを送信しません。自動的に世話をする必要があります。たとえば、jQueryの場合、$.ajaxSetup
のbeforeSend
フックを使用して、要求にトークンを自動的に追加します。リクエストのコンテンツタイプがx-www-form-urlencoded
の場合は、別のフォーム変数として追加することができます。application/json
のjsonリクエストの場合は、json値として追加できます。それは安全ですが、私は2つの問題を見ることができます。
トークンはビジネスロジックやビジネスデータの一部ではなく、リクエストの種類の「メタデータ」です。また、クエリーに固有のものではなく、データ構造全体にわたるクロスカッティングの問題です。だから、それをデータ構造から守る方が良いです。
もう1つの問題は、beforeSend
の既に構成された要求データにトークンを追加するのは面倒です。
これをトークンとして送信するほうがはるかに簡単です。トークンをajaxリクエストに追加するときに、トークンを追加するときに主に行う作業です。 X-CSRF-Token
などのようなカスタムリクエストヘッダーを追加することは非常に一般的であり、サーバー側でそこからトークンを確認することができます。
- 1. 期待CSRFトークン春のセキュリティ
- 2. Yii2 - Ajax CSRFトークン:予期しないトークン " - "
- 3. フラスコとcsrfトークン
- 4. Flask-Security CSRFトークン
- 5. ajaxのCSRFトークン
- 6. csrfトークン続き
- 7. Laravel behat CSRFトークン
- 8. csrfトークンdajaxice
- 9. symfony 3 csrfトークン
- 10. Apache ShiroのCSRFトークン
- 11. vueコンポーネントのCsrfトークン
- 12. ajaxリクエストのCSRFトークン
- 13. csrfトークンの使用
- 14. CSRFトークンの生成
- 15. CSRFトークンが無効
- 16. Rails CSRFトークン - 有効期限はありますか?
- 17. csrfトークンをストライプに渡す
- 18. CSRFトークンの受け渡し
- 19. 角2春のセキュリティCSRFトークン
- 20. OWASP CSRFトークンのハイジャックは
- 21. 403エラー - モーダルウィンドウのCSRFトークン
- 22. symfony 2 csrf検証トークン
- 23. 角2 CSRFトークンforレール
- 24. dropzoneでCSRFトークンを送信
- 25. Spring Security CSRFトークンを取得
- 26. ジャンゴCSRFトークンがここ
- 27. テストでCSRFトークンを取得
- 28. CSRFトークンの検証方法
- 29. 反応ルータのcsrfトークン
- 30. CSRFトークンのない認証
すばらしい説明!私はPHPでそれを行う伝統的な方法はありません。それは私のアプリケーションのために私のために特別に設計されたものなので、一般的な知識ではありません。私は、セキュリティの懸念があるかどうか疑問に思っていました。アプリケーションのセキュリティを是正するための知識があまりなく、明白であるかどうかは不明です。 –