크리에이터 콘텐츠를 위한 엔터프라이즈급 통제
miilink는 모든 단축 링크에 엔터프라이즈급 콘텐츠 통제를 적용합니다. 아래는 현재 production에 적용된 감사 가능한 통제 항목입니다.
투명성 약속
모든 보안 수정은 공개 GitHub commit으로 배포됩니다. Pre-launch 단계의 모든 P0 / P1 이슈에는 PR, 로드맵 문서, 리뷰가 함께 있습니다.
구현된 보안 통제
2026-05-14 기준3계층 접근 통제
콘텐츠 조회 시 uploadStatus → publishStatus → 만료 → 조회 횟수 한도 → 지역 → 테이크다운 순으로 검증. 한 계층이라도 실패하면 거부.
lib/content/access-check.ts엔드투엔드 암호화
AES-GCM-256 브라우저 로컬 암호화, PBKDF2 100k iterations로 키 유도. 서버는 평문을 보지 못하며 비밀번호도 DB에 저장하지 않음.
lib/crypto/encrypt.ts지역 제한
크리에이터가 허용 국가 화이트리스트를 지정. IP-국가 매핑은 DB-IP 데이터베이스로 실시간 조회.
Content.allowedCountries분산 rate limit
Token bucket을 Redis Lua script로 구현. 여러 app instance 간 일관성 보장, race condition 없음.
lib/rate-limit/limiter-unified.tsFail-closed 시크릿 검증
JWT_SECRET / FINGERPRINT_SECRET / CRON_SECRET / DATABASE_URL 중 하나라도 누락되면 production 시작 시 throw. fallback으로 조용히 실행되지 않음.
lib/config/secrets.tsContent Security Policy
CSP + HSTS + Referrer-Policy + X-Frame-Options 전부 적용. Report-Only 미러로 위반을 DB에 기록, 향후 nonce migration의 근거로 활용.
lib/security/csp.js시크릿 스캐닝 CI
모든 PR에 Gitleaks 자동 실행. 발견 시 인라인 코멘트 + merge 차단.
.github/workflows/ci.yml관리자 테이크다운 즉시 반영
단축 링크나 콘텐츠를 테이크다운한 후 조회는 즉시 거부되며 viewer 캐시도 동기 무효화. race 없음.
lib/content/access-check.ts → takedownResponse