Webセキュリティの基礎 / 約25分
秘密情報管理と安全なAPI設計
なぜこれを学ぶか
APIキーの漏洩、無制限のリクエスト、クライアント側だけの検証——どれも「動くけれど危険」なAPIの典型例です。安全なAPI設計の基本を押さえましょう。
秘密情報は環境変数で管理 します。APIキーやDBのパスワードをコードに直書きすると、Gitの履歴に残り続け、リポジトリが公開された瞬間に漏洩します(Linux&Dockerトラックの.envの話と直結します)。
レート制限 は、短時間に大量のリクエストを送るクライアントを制限する仕組みです。ブルートフォース攻撃やAPIの過負荷を防ぎます。
サーバー側検証が必須 です。クライアント側のバリデーションはUXのためであり、悪意あるユーザーはブラウザを介さず直接APIを叩けます。「フロントで弾いているから安全」は誤りです。
最小権限の原則: APIキーやユーザーアカウントには、必要最小限の権限だけを与えます。管理者権限を持つAPIキーがフロントエンドのコードに埋め込まれていた、という事故は後を絶ちません。
重要ポイント
- 秘密情報は環境変数で管理し、コードに直書きしない
- クライアント側の検証だけでは不十分、サーバー側検証が必須
- 最小権限の原則でAPIキー・アカウントの権限を絞る
コーディング演習実際に書く
APIキーの形式を検証する関数を実装してください。`dojo_live_` または `dojo_test_` に続けて32文字の英数字が続く形式(例: `dojo_live_ab12cd34ef56gh78ij90kl12mn34op56`)であれば true、それ以外は false を返してください。
function isValidApiKeyFormat(key)
スキルセルフチェック
このレッスンの内容をどの程度理解できましたか?