🔑
API 키 안전하게 관리하기
🚨 필수API 키를 코드에 직접 넣으면 안 되는 이유와 안전한 관리법
왜 위험한가?
API 키를 소스 코드에 직접 작성하면, GitHub에 push하는 순간 전 세계에 공개됩니다. 봇이 자동으로 스캔하여 몇 초 내에 악용됩니다.
❌ 나쁜 예시
// ❌ 절대 이렇게 하지 마세요
const API_KEY = "sk-abc123def456";
fetch(`https://api.openai.com/v1/chat/completions`, {
headers: { Authorization: `Bearer ${API_KEY}` }
});✅ 좋은 예시
// ✅ 환경 변수를 사용하세요
// .env.local (이 파일은 .gitignore에 추가)
// OPENAI_API_KEY=sk-abc123def456
// 서버 사이드에서만 접근
const response = await fetch('/api/chat', {
method: 'POST',
body: JSON.stringify({ message })
});안전한 방법
1. 환경 변수(.env)를 사용합니다. 2. .gitignore에 .env 파일을 추가합니다. 3. 클라이언트 코드에서 직접 API를 호출하지 않고, 서버 라우트를 거칩니다. 4. Vercel/Netlify 등 배포 시 환경 변수를 대시보드에서 설정합니다.
❌ 나쁜 예시
// ❌ 클라이언트에서 직접 호출
// NEXT_PUBLIC_ 접두사 = 브라우저에 노출!
const key = process.env.NEXT_PUBLIC_SECRET_KEY;✅ 좋은 예시
// ✅ API Route로 감싸기 (Next.js)
// app/api/chat/route.js
export async function POST(request) {
const key = process.env.OPENAI_API_KEY; // 서버에서만 접근
const res = await fetch('https://api.openai.com/...', {
headers: { Authorization: `Bearer ${key}` }
});
return Response.json(await res.json());
}