AI가 짜준 코드를 그대로 쓰면 안 된다는 말이 아닙니다. 검토 없이 쓰면 안 된다는 겁니다. AI는 "지금 요청한 것"에 집중합니다. 보안, 유지보수, 에러 처리는 명시적으로 요청하지 않으면 빠뜨리는 경우가 있습니다.
자주 나오는 문제 패턴
1. 존재하지 않는 패키지를 import함 (Hallucination)
AI가 자신있게 사용하는 라이브러리가 실제로 없거나 이름이 다른 경우가 있습니다. npm install 하면 "package not found" 에러가 납니다.
npm으로 설치 전에 패키지 이름을 npmjs.com에서 확인하세요.
2. API 키를 코드에 직접 입력
예시로 보여주려고 API 키를 하드코딩하는 경우가 있습니다. 이 코드를 깃허브에 올리면 키가 노출됩니다. 실제로 키가 탈취되어 요금 폭탄 맞는 케이스가 있습니다.
모든 키는 환경변수(.env)로 분리하고, .gitignore에 .env를 추가하세요.
3. 에러 처리가 없음
"일단 동작하는" 코드에 집중하다 보니 try-catch가 빠지거나 API 실패 시 처리가 없는 경우가 많습니다. 실사용자가 들어오면 서버가 죽거나 이상한 응답이 나옵니다.
"이 코드에 에러 처리 추가해줘"라고 후속 요청하세요.
4. 구버전 문법이나 deprecated API 사용
AI 학습 데이터에 구버전 코드가 많아서 최신 라이브러리의 이전 API를 사용하는 경우가 있습니다. 지금은 돌아가도 나중에 라이브러리 업데이트 시 깨질 수 있습니다.
"이 코드에서 deprecated된 부분 있어?"라고 확인하세요.
5. 입력값 검증 없음
사용자가 폼에 이상한 값을 넣거나 API에 비정상 요청을 보내면 서버가 죽거나 DB에 이상한 데이터가 들어갈 수 있습니다.
"사용자 입력값 검증 로직 추가해줘"라고 요청하세요.
복붙 전 최소 체크리스트
- API 키나 비밀값이 코드에 하드코딩되어 있지 않은가
- import하는 패키지가 실제로 존재하는가
- try-catch 또는 에러 처리가 있는가
- 사용자 입력을 그대로 DB에 넣지 않는가
- .env 파일이 .gitignore에 있는가
AI한테 직접 "이 코드 보안 문제 있어?" 라고 물어보면 됩니다. 직접 검토 요청이 가장 빠릅니다.
AI 코드를 잘 쓰는 방법
AI 코드가 나쁜 게 아닙니다. 검토 프로세스를 만들면 됩니다. 기능 코드 받기 → 보안/에러처리 후속 요청 → 배포 전 체크리스트 확인. 이 3단계만 있어도 나중에 터지는 문제의 80%를 막을 수 있습니다.
자주 묻는 질문
AI는 '동작하는 코드'를 우선합니다. SQL injection 방어, 입력값 검증, API 키 노출 방지 같은 보안 처리는 명시적으로 요청하지 않으면 빠뜨리는 경우가 있습니다.
있습니다. hallucination이라고 부르는 현상인데, 실제로 존재하지 않는 패키지나 함수를 자신있게 사용하는 코드를 짜줄 수 있습니다. npm install 전에 패키지 이름이 실제로 존재하는지 확인하세요.
AI한테 직접 물어보면 됩니다. '이 코드에 보안 문제는 없어?', 'API 키가 노출될 가능성은?', '에러 처리가 빠진 부분은?' 식으로 검토를 요청할 수 있습니다.