JWT が漏らすもの — 本番トークンをオンラインに貼らない理由
JSON Web Token はランダムに見えますが、正確に 3 部構成です: header、payload、signature。それぞれの役割を知ることはセキュリティの基本スキルです。
署名は改ざん防止 — 閲覧防止ではない
header と payload はただの Base64URL です。トークンを持つ者は、user id、メール、ロール、有効期限といったクレームを簡単に読めます。署名が証明するのは、秘密鍵を持たない者による payload の改変がなかったことだけです。
古典的な罠: alg=none
サーバーが algorithm=none のトークンを受け入れると、署名は完全にスキップされます — 乗っ取りバグの有名な系譜です。サーバーは期待するアルゴリズムを固定すべきです。
本番トークンをどこでも貼らない
セッショントークンはベアラークレデンシャルです。持っている人が有効期限まであなたとして振る舞えます。生きたトークンを知らないデコーダーに貼ることは、セッションをそのサイトに渡す行為です。検査にはブラウザ内でローカルにデコードするツールを — 当サイトの JWT デコーダーは何も送信しません — そもそもテストトークンを使いましょう。
手早いチェックリスト
- 信頼する前に exp を確認
- アルゴリズムがサーバー期待どおりか確認
- トークンは常に読めるもの、秘密ではない
トークンを安全に検査: ローカルでデコード — header と payload が即座に表示され、送信はありません。