JWT トークンは、最近 Web アプリケーションで非常に一般的な認証方法となっています。 これは資源を保護する最も安全な方法の1つであり、市場に選択肢はありませんが、すべてのバラにはスパイクがあり、ここにも多くの潜在的なリスクが潜んでいる点に注意してください。 主に実装エラーが原因です。 彼らを防ぐために、次のルールに固執する価値があります。
- 少なくとも 2048 ビットの十分に複雑な暗号化キーを使用していることを確認します。
- 暗号鍵の漏洩の場合に備えて、手順を作成します。
- キーは安全な方法で保存する必要があります (たとえば、キーはソース コードに含めないようにする必要があります)。
- クライアント側で変更できないように、サーバーで特定の署名メソッドを必要とします。
- 実装で署名アルゴリズム "none" が許可されないことを確認します。
- 実装が確実に署名をチェックしていることを確認します (空白の署名を受け入れ、関数 "verify()" と "decode()" を区別しません)。
- デバッグ モードが無効であり、クライアント側で強制できないことを確認します。
- URL 内の JWT トークンを送信しないでください。
- JWT トークンで機密情報を開示しないことを確認します。
- リプレイ攻撃から身を守っていることを確認してください。
- トークンの有効期間が十分に短く、実際に正しくチェックされていることを確認します。
- 個々のトークンを無効にする機能が必要かどうかを検討してください。