Compit
소개문의요금제개인정보처리방침이용약관환불규정

온드(ONDE) | 대표: 노승현 | 사업자등록번호: 778-22-02215

서울특별시 광진구 긴고랑로 133-1, 401호(중곡동, 백림주택) | 전화: 010-7794-3962

© 2026 Compit. All rights reserved.
COMPIT
챌린지연습장쇼케이스학습랭킹가이드보안기초
챌린지연습장쇼케이스학습랭킹가이드보안기초
← 보안 기초
🔑

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());
}
← 목록으로다음: XSS(크로스 사이트 스크립팅) 방어 →