~/VibeHandbook
$39

챕터 18 · 07

보안 리뷰 게이트

위의 모든 것을 걱정거리에서 프로세스로 바꾸는 습관 하나가 여기 있다: 출시 전에, AI가 자기 코드를 공격하게 만들라. 기능을 쓴 모델은 보통 그 안의 구멍을 찾아낼 수 있다 — 다만 시키지 않으면 안 할 뿐이다. 빌더에서 공격자로 뒤집어라:

너는 이 엔드포인트를 작성했다. 이제 그것을 깨뜨리려는 공격자처럼 행동하라.
악의적인 사용자가 다음을 할 수 있는 모든 방법을 나열하라:
  - 자기가 봐서는 안 되는 데이터를 읽거나 수정 (인가 구멍)
  - 입력을 통해 코드 주입 (SQL injection, XSS, command injection)
  - 빠진 검증이나 rate limit을 악용
각각에 대해 그것을 익스플로잇하는 정확한 요청을 보여주고, 그다음 해결책을 보여라.
나를 안심시키지 말라 — 취약점이 있다고 가정하고 그것을 찾아라.

그 마지막 줄이 중요하다: 중립으로 두면 AI는 "안전해 보인다!"라고 말하는 경향이 있다. 결함이 존재한다고 가정하라고 시키면, 실제로 찾으러 나선다. 그 적대적 패스를, 사용자에게 노출되는 무엇에든 돌리는 짧은 출시 전 체크리스트와 짝지어라:

  • 모든 엔드포인트가 사용자가 로그인했는지뿐 아니라 인가를 점검한다
  • 모든 데이터베이스 쿼리가 parameterized다 — 문자열로 만든 SQL 없음
  • 페이지에 렌더링되는 사용자 입력이 이스케이프된다 (raw HTML 주입 없음)
  • 클라이언트 코드에 비밀값 없음, 저장소에 커밋된 것도 없음
  • .env가 gitignore되어 있음; 새어나간 키는 모두 로테이션됨
  • 파일 업로드가 타입과 크기를 검증하고 생성된 이름을 사용한다
  • 새 의존성이 실제 존재 여부와 평판을 눈으로 확인받았다

그리고 푸시하기 전에 secret scanner를 돌려라 — gitleaks 같은 도구(혹은 당신 플랫폼의 내장 스캐닝)는 당신의 코드와 히스토리에서 키처럼 생긴 것들을 grep한다. 이 목록에서 가장 비싼 실수에 대한 명령어 하나짜리 안전망이고, AI를 시켜 CI에 엮어 넣으면 매번 푸시할 때마다 돌게 할 수 있다.

오프라인으로 보고 싶으세요?

PDF + EPUB + 다운로드형 프롬프트 라이브러리 + 버전 업데이트를 받으세요.

$ PDF 받기 — $39