私のアプリケーションをcsrfから保護したいと思います。問題の内容とソリューションの仕組みを理解できませんでしたが、いくつかの研究の後、私はAngularが使用する解決策を思いつきました。私の知る限りだと、私の解決策は、以下の手順を実行する必要がありますリクエストごとのcsrfトークンはどのように動作するのですか
- 私スパ
用>クライアント要求 - >私は(ないHttpOnlyのJSはそれを読むことができるようになりますように)CSRFトークンを送信します。また、このcsrfトークンをサーバーのユーザーセッションに保存します。
- >投稿リクエストごとに、クライアントがcsrfトークンを読み取り、X-XSRF-TOKENヘッダーをこのトークンに設定するようにします。
→リクエストヘッダーとユーザーセッションcsrfトークンを確認することですべてのリクエストをチェックします。もし一致すれば、必要ならば認証のためにjwtもチェックします。
- > csrfトークンを検証した後、データベースを変更します。また、csrfトークンを再度変更し、新しいトークンをユーザーに送信し、セッションのトークンを変更します。
しかし、私はこれがどのように役立つかわかりません。もし私にxssの脆弱性があるなら、注入されたjavascriptコードでも同じことができます。私は問題と、そのようなソリューションがどのように役立つかを理解したい。ありがとう。
FYI。また、JWTベースの認証を、エクスプレスサーバー上のセッション管理にredisを使用して実装しています。
私は読んだあなたのポイントと以前のものを得た。だから私の実装は有効です。なぜなら私はトークンでヘッダを必要とし、クロスサイト要求は私のクライアントでやっているようにできないからです。 – FurkanO
サイトに注入されていないクロスサイトは、簡単にクッキーを取得できません。したがって、これに加えてあらゆる認証は、あなたの安全を保ちます。 CSRFトークンは短命であり、単一の要求に対してのみ有効であることが推奨されます。 –