가장 위험한 규칙 3가지
// 1. 전부 허용
allow read, write: if true;
// 2. 로그인만 하면 누구 데이터든 허용
allow read, write: if request.auth != null;
// 3. 테스트 모드 기한 규칙 (기한이 지나면 전부 거부 → 서비스 장애)
allow read, write: if request.time < timestamp.date(2026, 1, 1);
2번은 안전해 보이지만, 익명 로그인이 켜져 있으면 사실상 누구나 로그인할 수 있어 1번과 다르지 않습니다.
점검 체크리스트 10
- Firestore 규칙 맨 아래에 기본 거부(
match /{document=**} { allow read, write: if false; })가 있는가 - 사용자 문서는
request.auth.uid == userId로 본인만 쓰게 되어 있는가 - 관리자 권한을 클라이언트 필드가 아니라 Custom Claims 등 서버 쪽으로 판정하는가
- Storage 규칙에 경로별 소유자 확인과 파일 크기·형식 제한이 있는가
- 한 Firebase 프로젝트를 여러 앱이 같이 쓴다면 컬렉션 접두사별 규칙이 분리되어 있는가
- 서비스 계정 키(JSON)나 서버용 API 키가 앱 코드·공개 저장소에 들어가 있지 않은가
- App Check로 앱이 아닌 곳의 요청을 줄이고 있는가
- Cloud Functions의 호출 권한과 입력 검증이 있는가
- 연락처·주소 등 개인정보를 필요한 경우 암호화해 저장하는가
- 규칙 변경이 에뮬레이터 테스트를 거쳐 배포되는가
여러 앱이 한 프로젝트를 쓰는 경우
앱몬스터도 한 Firebase 프로젝트에서 여러 서비스를 컬렉션 접두사로 나눠 운영하며, 통합 규칙 파일 하나에 앱별 규칙과 기본 거부를 함께 관리합니다. 재귀 와일드카드 기본 거부는 새로 만든 하위 컬렉션까지 막기 때문에, 기능을 추가할 때마다 규칙을 같이 갱신해야 합니다.
자주 묻는 질문
규칙을 바꾸면 앱이 멈추지 않나요?
허용 범위를 좁히면 기존 기능이 권한 오류를 낼 수 있습니다. Firebase 에뮬레이터나 규칙 플레이그라운드로 주요 화면의 읽기·쓰기를 먼저 시험한 뒤 배포하세요.
Firebase 웹 API 키가 노출되면 위험한가요?
웹 설정의 apiKey는 식별용이라 공개 자체는 정상입니다. 위험한 것은 보안 규칙이 열려 있는 상태와, 서비스 계정 키·서버용 비밀키 노출입니다.
점검을 맡기면 무엇을 받나요?
앱몬스터 보안 점검은 규칙·권한·키 노출·백업·SSL 항목을 확인해 위험도별 리포트와 긴급 조치를 제공합니다.