APIキーと秘密情報の管理
なぜ学ぶか: 「AIとアプリを作ったら、APIキーが漏れて高額請求が来た」— これは実際に多発している事故です。セキュリティの中でも件数が多く、被害も分かりやすいのがこれ。だからこのフェーズの先頭に置きました。キーの扱いの鉄則を、ここで体に染み込ませます。
秘密情報=漏れたら悪用される値
APIキー・DBのパスワード・トークンなど。これらが漏れると、他人があなたの権限で操作したり課金したりできます。
鉄則①:コードに直書きしない
キーは環境変数(.env.local)に置き、コードからはprocess.envで読みます。直書きはGit経由で漏れます。
鉄則②:ブラウザに渡さない
秘密キーはサーバー側でだけ使います(Route Handler)。NEXT_PUBLIC_を付けたら世界に公開と同義です。
鉄則③:漏れたら即無効化
GitHubにpushしてしまったら、消しても手遅れ。すぐキーを作り直して古いのを無効化します。「消せば大丈夫」は誤りです。
コード例
// ❌ 絶対NG: コードに直書き(Git に残り、漏れる)
// const apiKey = "sk-abc123...";
// ❌ 絶対NG: ブラウザに公開(誰でも開発者ツールで見られる)
// const apiKey = process.env.NEXT_PUBLIC_API_SECRET;
// ✅ 正解: 環境変数(無印)+ サーバー側でだけ使う
// app/api/xxx/route.ts の中で:
export async function POST() {
const apiKey = process.env.API_SECRET; // サーバーでのみ読める
console.log("キー設定済み:", Boolean(apiKey));
return Response.json({ ok: true });
}「直書きしない・ブラウザに渡さない・漏れたら無効化」。この3つだけで、最も多い事故のほとんどを防げます。AIのコードでは特に2番目(NEXT_PUBLIC_の付け間違い)を目視で確認しましょう。
ステップ 1 / 2
※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。