以下の内容はhttps://cysec148.hatenablog.com/entry/2025/07/13/225816より取得しました。


第4回 トークン認証とJWT:改ざんや漏えいを見抜くポイント

Hello there, ('ω')ノ

そもそもトークン認証とは?

簡単に言うと:

  • サーバー側ではなく、ユーザー側が「鍵」を持つ方式
  • その「鍵」がトークン(JWTがその一種)

この鍵が破られたり、改ざんされたりすると不正ログインにつながります。


JWTの中身:見るべき構造

JWTは3つの部分でできています:

ヘッダー.ペイロード.署名

① ヘッダー:使う暗号方式の情報

② ペイロード:ユーザー名や有効期限

③ 署名:改ざん防止用のチェック

ブラウザの開発者ツールやプロキシツールを使うと簡単に中身を観察できます。 文字列が長くても、オンラインのJWTデコーダー(jwt.ioなど)で分解できます。


チェックポイント① トークンの改ざん耐性

  1. JWTをデコードしてペイロードを見る:

    • user: admin
    • exp: 2025-12-31
  2. user=admin → ほかのIDに変えて再署名なしで送信してみる → サーバーが受け付けてしまう場合、署名検証が甘い証拠!

  3. ヘッダー部分に“alg: none”になっていないか確認 → 暗号方式なし=非常に危険


チェックポイント② 秘密鍵の漏えいリスク

JWTの署名を検証するための「秘密鍵」が外部に漏れていないか:

  • GitHubや公開資料にハードコードされていないか確認
  • トークン発行元URLが安全なHTTPSか?
  • 固定値で発行されるトークンがないか? → ログインするたびに値が変わるべき

チェックポイント③ 有効期限と取り消し機構

  • exp(有効期限)が極端に長すぎないか? 例:1年や無期限など

  • 一度発行したトークンを無効化できる仕組みがあるか? 例:ログアウト時にサーバー側で無効化処理が走るか


社内システムでの簡単な確認手順例

① ログイン → 開発者ツールでリクエストヘッダーを確認

② Authorization: Bearer トークンが見えるか?

③ そのトークンをコピーしてjwt.ioなどで中身をチェック

④ userやroleの値を変えて再送信してみる(安全な環境で)

⑤ 有効期限とヘッダー設定をメモ


まとめ:トークン認証・JWTの脆弱性を見つけるための観察ポイント

  • JWTの署名がきちんと検証されているか?
  • alg: none やヘッダー設定が適切か?
  • 有効期限やトークン管理ポリシーは安全か?

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/07/13/225816より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14