1. 작은 서비스도 공격 대상이 됩니다.
공격은 대부분 사람을 노리는 것이 아니라 알려진 실수를 찾는 자동 검색으로 시작됩니다. 코드 저장소에 올라간 API 키, 기본 비밀번호, 열려 있는 관리자 주소가 대표적입니다.
보안의 출발점은 어려운 기술이 아니라 실수하지 않는 습관입니다. 아래 항목은 대부분 한 번 정해 두면 계속 지켜지는 것들입니다.
2. 비밀값은 코드 밖에 둡니다.
분리
환경설정 파일로 빼기
API 키, DB 비밀번호, 결제·문자 서비스 키는 코드에 직접 쓰지 않고 환경설정(.env 등)이나 플랫폼의 비밀값 설정에 둡니다.
제외
저장소에 올리지 않기
환경설정 파일은 코드 저장소에 올리지 않도록 제외 목록(.gitignore)에 넣습니다. 압축해서 전달할 때도 빼세요.
재발급
올라갔다면 즉시 바꾸기
실수로 올렸다면 파일을 지우는 것으로 끝나지 않습니다. 기록에 남아 있으므로 해당 키를 즉시 폐기하고 새로 발급하세요.
AI에게 확인하는 요청 예시
이 프로젝트 전체에서 코드에 직접 들어간 비밀번호, API 키, 토큰, 접속 주소를 찾아 목록으로 보여 줘. 그리고 환경설정으로 옮기는 방법과 저장소 제외 설정을 알려 줘.
이 프로젝트 전체에서 코드에 직접 들어간 비밀번호, API 키, 토큰, 접속 주소를 찾아 목록으로 보여 줘. 그리고 환경설정으로 옮기는 방법과 저장소 제외 설정을 알려 줘.
3. 개인정보는 ‘필요한 만큼, 필요한 동안’만
| 질문 | 예 | 아니오 |
|---|---|---|
| 이 항목이 없으면 서비스가 안 되나? | 수집하되 목적을 적어 둠 | 수집하지 않음 |
| 더 약한 정보로 대신할 수 있나? | 생년월일 대신 ‘성인 여부’ 등으로 대체 | 필요한 범위만 |
| 언제까지 보관해야 하나? | 기간을 정하고 지나면 파기 | 목적이 끝나면 바로 파기 |
| 누가 볼 수 있나? | 역할별로 제한(6편) | 전 직원 열람은 피함 |
주민등록번호처럼 법령에 근거가 없으면 처리할 수 없는 정보도 있습니다. 개인정보를 받는 서비스라면 개인정보 처리방침을 게시해야 하고, 업종·규모에 따라 추가 의무가 생길 수 있습니다. 법적 판단이 필요한 부분은 전문가에게 확인하세요.
4. AI 결과물에서 자주 보이는 보안 구멍
| 구멍 | 위험 | 기본 대응 |
|---|---|---|
| 관리자 주소만 숨겨 둠 | 주소를 알면 누구나 접근 | 로그인 + 관리자 역할 확인(6편) |
| 파일 업로드 제한 없음 | 악성 파일·용량 폭탄 | 파일 종류·크기 제한, 실행 불가 위치에 저장 |
| 에러 화면에 내부 정보 노출 | 구조·경로·쿼리 노출 | 운영 환경에서는 일반 안내 문구만 |
| 입력값을 그대로 저장·출력 | 스크립트·쿼리 주입 | 검증된 프레임워크 기능으로 입력 처리 |
| HTTPS 미적용 | 로그인 정보 가로채기 | 도메인에 인증서 적용(대부분 무료) |
| 기본·테스트 계정 남음 | 손쉬운 침입 | 오픈 전 정리(6편) |
5. 백업은 ‘복구해 봐야’ 백업입니다.
1무엇을
데이터베이스와 사용자가 올린 파일. 코드는 저장소에 있습니다.
2얼마나 자주
데이터가 바뀌는 만큼. 업무용이면 최소 하루 한 번 자동으로.
3어디에
운영 서버와 다른 곳(다른 서비스·다른 계정)에 보관.
4복구 연습
분기에 한 번, 백업으로 실제로 되살려 보기.
접근 기록(누가 언제 로그인하고 무엇을 바꿨는지)도 함께 남겨 두면 문제가 생겼을 때 범위를 빨리 파악할 수 있습니다.
6. AI에게 보안 점검을 받되, 한계를 알고 쓰세요.
요청 예시
이 프로젝트를 보안 관점에서 점검해 줘. ① 코드에 들어간 비밀값 ② 서버에서 권한을 확인하지 않는 곳 ③ 입력값 검증이 없는 곳 ④ 파일 업로드 제한 ⑤ 에러 메시지 노출 ⑥ 개인정보 저장 위치를 표로 정리하고, 위험도 높은 순으로 고치는 방법을 알려 줘.
이 프로젝트를 보안 관점에서 점검해 줘. ① 코드에 들어간 비밀값 ② 서버에서 권한을 확인하지 않는 곳 ③ 입력값 검증이 없는 곳 ④ 파일 업로드 제한 ⑤ 에러 메시지 노출 ⑥ 개인정보 저장 위치를 표로 정리하고, 위험도 높은 순으로 고치는 방법을 알려 줘.
AI 점검은 기본 실수를 거르는 데 유용하지만 보안 검증을 대신하지는 못합니다. 결제, 대량 개인정보, 의료·금융 정보를 다룬다면 오픈 전에 반드시 전문가 검토를 받으세요.
7. 오픈 전 보안 체크리스트
코드와 저장소에 비밀값이 없다.
환경설정 파일은 저장소 제외 목록에 있다.
개인정보 항목마다 목적과 보관 기간을 정했다.
개인정보 처리방침을 게시했다.
HTTPS가 적용되어 있고 테스트·기본 계정을 정리했다.
백업이 자동으로 되고, 한 번 복구해 봤다.
한 줄 원칙
보안은 기술보다 습관입니다.
비밀값은 코드 밖에, 개인정보는 최소로, 백업은 복구까지. 이 세 가지만 지켜도 작은 서비스에서 일어나는 사고의 상당 부분을 막을 수 있습니다. 다음 편에서는 만든 서비스를 내 명의로 지키는 법을 다룹니다.