가장 강한 보안은 ‘안 받는 것’
수집한 정보가 없으면 샐 것도 없습니다. 법적 근거 없이 주민등록번호는 받지 않습니다. 본인확인이 필요하면 본인확인기관(휴대폰 인증 등)을 쓰고, 그 결과값만 보관합니다. 서비스에 꼭 필요한 최소 항목만 받는 것이 원칙이자 가장 확실한 보안입니다.
비밀번호는 되돌릴 수 없게
비밀번호는 해시로 저장합니다. 관리자가 원문을 볼 수 있으면 위험합니다. bcrypt 같은 검증된 방식으로 해시하고, 절대 평문·양방향 암호로 저장하지 않습니다.
const bcrypt = require('bcryptjs');
const hash = await bcrypt.hash(password, 10); // 저장
const ok = await bcrypt.compare(input, hash); // 검증
민감정보는 암호화
연락처·주소·생년월일처럼 되돌려 써야 하는 정보는 AES-256 같은 양방향 암호화로 저장합니다. 키는 코드가 아니라 별도 비밀 저장소(환경변수·시크릿 매니저)에 둡니다.
접근을 최소화한다
- 회원 정보 열람 권한을 등급별로 나눕니다(모두가 전체를 보지 않게).
- DB 보안 규칙에서 본인 데이터만 접근하게 합니다.
- 퇴사자·외주 계정을 즉시 회수합니다.
백업과 파기
정기 백업을 두되, 백업도 암호화합니다. 그리고 보관 기간이 지난 데이터·탈퇴 회원 데이터는 정해진 절차로 파기합니다. 수집만 하고 안 지우면 위험이 계속 쌓입니다.
자주 묻는 질문
주민등록번호를 꼭 받아야 하는 서비스라면요?
법적 근거가 있는 경우에만 수집·암호화 저장이 허용됩니다. 대부분은 본인확인기관을 통해 대체할 수 있습니다.
Firebase에서도 암호화해야 하나요?
전송·저장이 기본 암호화되지만, 민감 필드는 추가 암호화와 보안 규칙으로 접근을 제한하는 것이 안전합니다.
우리 서비스 점검을 맡길 수 있나요?
수집 항목, 비밀번호 저장 방식, 암호화, 접근 권한, 백업을 점검해 위험도별 리포트를 드립니다.
함께 읽기: 무료 보안 체크리스트 · 보안 점검 서비스