# 보안 기본 규칙

## 1. 비밀값은 어디에도 남기지 않는다

비밀번호·토큰·API 키·개인 키(private key)·서명 비밀번호는 다음 어디에도 쓰지 않습니다.

| 남기면 안 되는 곳 | 흔한 실수 |
|---|---|
| 소스 코드 | 상수로 박아 넣기 |
| 커밋·커밋 메시지 | 설정 파일을 통째로 `git add` |
| 이슈·PR·릴리스 노트 | 재현용으로 설정값 붙여넣기 |
| 로그 | 요청 헤더·접속 문자열을 그대로 출력 |
| 문서·채팅 | 접속 방법을 설명하며 비밀번호까지 적기 |
| git 원격 URL | `https://<토큰>@github.com/...` 꼴로 등록 |

- 비밀값은 **환경변수나 운영자 전용 보관소**에서 읽습니다.
- 설정 파일에는 **비밀값 칸을 비워 둔 견본**만 저장소에 넣습니다.
- 실수로 올렸다면 **지우는 것만으로는 부족합니다.** 그 값을 폐기·재발급합니다(git 기록에 남기 때문).

> 왜 — 실제로 원격 URL 에 개인 토큰이 박힌 채 오래 방치된 저장소가 발견된 적이 있습니다. URL 은 화면·로그에 쉽게 찍힙니다.

## 2. 로그인 화면에 기본 계정을 보여 주지 않는다

로그인 화면에는 기본 아이디·비밀번호를 **어떤 형태로도** 노출하지 않습니다.

| 금지 형태 | 예 |
|---|---|
| 안내 문구 | "초기 계정: admin / 1234" |
| 입력칸 힌트(placeholder) | `placeholder="admin"` |
| 자동 입력 | 기본값을 입력칸에 미리 채우기 |
| 화면 소스 주석 | `<!-- test: admin/1234 -->` |

기본 계정 정보가 필요하면 **설치·운영 문서**에만 적고, 첫 로그인 뒤 변경하게 합니다.

## 3. 서명 키·업데이트 키

- 개인 키는 **소스·로그·앱·서버 어디에도 두지 않고**, 운영자만 접근하는 보관소에 둡니다.
- 서명 비밀번호는 빌드 직전에 세션 환경변수로만 올리고, 화면·로그·문서·커밋에 남기지 않습니다.
- 키 파일 자체는 잃어버리면 **복구할 수 없으므로** 별도 백업을 유지합니다.
- 이미 쓰고 있는 키·제품 식별자는 바꾸지 않습니다(바꾸면 기존 설치본이 업데이트를 받지 못합니다).

## 4. 새 저장소는 비공개가 기본

- 저장소를 새로 만들 때 공개 범위를 따로 정하지 않았으면 **비공개(private)** 로 만듭니다.
- 공개 여부는 담당자에게 확인을 받은 뒤 바꿉니다.

## 5. 현장 자료

- 현장 로그 **원본**은 공유 저장소에 올리지 않습니다(용량·개인정보). 필요한 것은 **요약**(명령별 필드·값 집합 등)만 올립니다.
- 고객(목장) 이름·연락처·주소는 공개 문서에 쓰지 않습니다.

## 6. 점검 결과를 정상으로 간주하지 않는다

자동 보안 검사가 **실패했거나 확인하지 못한 항목**을 "문제없음"으로 보고하지 않습니다. 확인한 범위와 확인하지 못한 범위를 나눠 적습니다.

## 7. `.gitignore` 로 막기

비밀값이 든 파일(`.env`, 키 파일, 로컬 설정)은 `.gitignore` 로 처음부터 제외합니다. 기본 목록은 '.gitignore 기본' 문서를 참조하세요.
