web-dev-qa-db-ja.com

JWT認証は抗CSRFメカニズムとして機能できますか?

Angularシングルページアプリケーション(Angular + REST API)を使用する場合 [〜#〜] jwt [〜#〜] =認証。JWTトークンが適切に生成され、実際にはランダムであると想定しましょう(予測できません)。

このJWTトークンは Cross Site Request Forgery(CSRF) に対する十分な保護ですか?言い換えれば、JWTは反CSRFトークンとしても十分ですか?

6
boleslaw.smialy

JWTがヘッダーにある場合は、安全である必要があります。攻撃者は被害者のブラウザをだましてヘッダーを設定することはできません(CORSが許可しない限り、または古い Flashエクスプロイト を利用しない限り)。しかし、攻撃者がヘッダーを制御できるとしましょう。次に、彼女はそれを何に設定する必要がありますか?彼女は知りませんでした。

一方、JWTがCookie内にある場合、通常のセッションCookieと同じように脆弱になります。したがって、脆弱であるかどうかは、使用するトークンの種類(JWTまたはセッションID)とはほとんど関係ありませんが、それを配置する場所(ヘッダーまたはCookie)とは関係があります。

認証にautomagic CSRF保護が付属している場合でも、明示的なCSRF保護を追加することを検討してください。認証メカニズムが二重の目的を持つことに気付かずに誰かが認証メカニズムを変更するリスクは常にあります。

6
Anders