JWTとセッションセキュリティ

🔥 Vibe プロンプト

「JWTを監査:デコード、alg=none攻撃の確認、弱いHMAC鍵のブルートフォース。」

import jwt, json, base64

token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiYWRtaW4iLCJyb2xlIjoidXNlciJ9.sig"

header_b64, payload_b64, _ = token.split(".")
def b64_decode(s):
    s += "=" * (4 - len(s) % 4)
    return json.loads(base64.urlsafe_b64decode(s))

print(f"ヘッダー: {b64_decode(header_b64)}")
print(f"ペイロード: {b64_decode(payload_b64)}")

# alg=none攻撃
none_token = "eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VyIjoiYWRtaW4iLCJyb2xlIjoiYWRtaW4ifQ."
try:
    decoded = jwt.decode(none_token, options={"verify_signature": False})
    print(f"alg=none攻撃成功: {decoded}")
except:
    print("alg=none拒否 (良好)")

JWTセキュリティチェックリスト

| 問題 | リスク | 対策 | |-----|-------|------| | alg=none | 重大 | noneを拒否 | | 弱い秘密鍵 | 高 | 256ビットランダム | | 期限なし | 中 | expクレーム追加 |

セッションセキュリティ

session["user_id"] = user.id
session.permanent = True
app.permanent_session_lifetime = timedelta(hours=2)

# ログイン後に再生成
session.clear()  # セッション固定化防止
session["user_id"] = user.id

重要なポイント

  • コアコンセプトをしっかり理解する
  • ハンズオンコード例で実践する
  • 実世界の問題に応用する
  • 演習で知識を強化する

さらに学ぶ

  • 公式ドキュメント
  • GitHubのオープンソースプロジェクト
  • コミュニティフォーラムとディスカッション
  • 関連コースとチュートリアル

完全なチュートリアルをロック解除

このチャプターは有料コンテンツです。プロジェクトに参加して、10以上の神レベルのPromptや実際のソースコード例を含む、5000字以上の深い分析をロック解除してください!