不透明なセッショントークンよりも安全なJSON Webトークンを使用する方法両方のシナリオでは、トークンは最初にクライアントに送信され、クライアントが保護されたリソースを要求するとサーバー上で検証されます。JSON WebトークンはCookie /セッションよりもどのように安全ですか?
答えて
人々は、JWTがより安全であると言ういくつかの理由があります。私はそれらを列挙し、両方の方法でそれが振る舞うときに本当にそうでないかもしれない理由を説明します。
JWTsはHS256やRS256などの安全なアルゴリズムと秘密を使用して署名することができます。総合的なリストはhereです。さらに、JSON Webトークンのペイロードを暗号化することもできます。ただし、セッショントークンは、トップノッチアルゴリズムで安全に生成し、署名付きのCookieに格納することもできます。
JWTは、CookieまたはWeb Storage(ローカル/セッションストレージ)に格納できます。 JWTをクッキーに保存していない場合は、CSRFに対して脆弱ではありません。また、HTTPリクエストごとにAuthorizationヘッダーを使用して送信することもできます。しかし、まだ注意が必要です。 JavascriptはWebストレージからJWTにアクセスするために使用されますが、それでもXSS(クロスサイトスクリプティング)などの他の攻撃方法を利用できます。値するのは、CSRFよりもXSSを扱うほうが簡単だということです。
- あなたのJWTが改ざんされた状況では、トークンを取り消したり、ブラックリストに登録することができます。これは私があなたにすることを勧めないこの種の操作を実行するたびに、DBに電話をかけることを含みます。優先オプションは、短命トークンを使用することです。 OAuthの場合
、さもなければベアラトークンとして知られる不透明トークンが満了と共にサーバにハッシュ化されたストレージのいくつかの種類に格納されるランダムな文字列は、要求された範囲(例えば、友達リストへのアクセス)、あります同意したユーザーその後、APIが呼び出されると、このトークンが送信され、ハッシュテーブルでサーバーのルックアップが行われ、コンテキスト決定が行われます(期限切れでしたか?このトークンには、アクセスされましたか?)。不透明トークンと署名付きトークン(JWTなど)の主な違いは、JWTがステートレスであることです。それらはハッシュテーブルに格納する必要はありません。
結論
署名し、あなたのJWTsがあなたの認証プロセスを確実にするために安全であるべきで暗号化するために使用するライブラリも安全です。また、ログインのために使用するのではなく、ストレージメカニズムとしてクッキーを使用する必要があります。 JWTの使用には、拡張が容易で、OAuthの場合にはarticleにあるような利点があると主張できます。その日の終わりに、私の意見では、認証や承認に使用されるトークンの形式に関係なく、アプリケーションをセキュリティで保護するための正しい手順を確実に実行するために、開発者の推論/ロジックに単純に該当します。この場合、ユースケースも重要です!
- 1. なぜcodeigniter2はセッションのようにより安全な方法でcsrf_hashを保存しないのですか?
- 2. どのように安全ですJWT
- 3. Javaで安全なセッションCookieを読む
- 4. (X/C)SRF-TOKENクッキーはJSESSIONIDクッキーよりもどのように安全ですか?
- 5. AndroidのFirebaseローカルデータベースはどのように安全ですか?
- 6. JWT/JSON Webトークン:作成時に本体のトークンを渡すのは安全ですか?
- 7. 安全なCookieと安全でないCookieの違い
- 8. 子どものテーマでアクションフックを安全に取り外すにはどうすればよいですか?
- 9. "self"はオブジェクトを呼び出すよりも安全ですか?
- 10. enumはどのようにjava型で安全ですか
- 11. RC4-128ビットはAES-128ビットよりも安全ですか?
- 12. この単語数はどのように安全ですか?
- 13. AzureのFTP展開はどのように安全ですか?
- 14. 安全で安全なセッション名とは何ですか?
- 15. は、このようにキャストしても安全かどう思っポインタのポインタ
- 16. トークン認証をより安全にする方法
- 17. FTPサーバーはどのように安全ですか?
- 18. ARM TrustZoneセキュアOSはどのように安全ですか?
- 19. JSON WebトークンをCookieに保存する最も良い方法は?
- 20. ServiceStackのセッションIDは安全ですか?
- 21. どのアルゴリズムがより安全ですか?
- 22. なぜポインタがポインタよりも安全ですか?
- 23. Javaで簡単に安全なWebサービスを構築するにはどうすればよいですか?
- 24. Pyramid_beaker:session.type = cookieは安全ではありませんか?
- 25. Jasypt:どのように安全なマスターパスワードですか?
- 26. ASP.NETは本質的に他の言語よりも安全ですか?
- 27. Swift 4でJSON(JSON Webトークン)をデコードするにはどうすればよいですか?
- 28. ServerSideセッションは安全ですか?
- 29. トークンの保存 - セッション、Cookie、またはキャッシュ?
- 30. ログインしたままにするベストプラクティス:Cookieのユーザー名はどのようにしてより安全になりますか?
次の項目を確認できます。http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions – dbautistav