보안
Headless Commerce는 모든 계층에서 보안을 고려하여 설계되었습니다. OWASP Top 10, NIST, SOC 2 표준을 준수합니다.인프라
HTTPS 전면 적용
모든 API 트래픽은 TLS 1.3으로 암호화됩니다. HSTS preload가 적용되어 브라우저가 평문 HTTP로 연결하지 않습니다.
데이터 격리
모든 조직의 데이터는 애플리케이션 계층에서 엄격히 격리됩니다. 모든 데이터베이스 쿼리는 해당 스토어로 범위가 지정되어 교차 테넌트 접근이 불가능합니다.
관리형 데이터베이스
Neon PostgreSQL — 자동 백업, 시점 복구, 저장 시 암호화를 제공합니다.
엣지 네트워크
Cloudflare 프록시 엔드포인트 — DDoS 보호, WAF, 정적 자산 글로벌 엣지 캐싱을 제공합니다.
인증 및 인가
API 키 보안
- 해시 저장 — API 키는 해시 처리 후 저장합니다. 평문 키는 저장하지 않습니다.
- 키 접두사 —
sk_(비밀),pk_(공개) 접두사로 키 유형을 쉽게 식별하고 노출을 방지합니다. - 키 순환 — 대시보드에서 즉시 키를 교체할 수 있으며, 이전 키는 즉시 무효화됩니다.
- 스코프 권한 — OAuth 토큰은 14개의 세분화된 스코프(
products:read,orders:write등)를 지원하여 최소 권한 원칙을 따릅니다.
다중 인증 (MFA)
대시보드 계정은 TOTP 기반 이중 인증과 백업 코드를 통한 계정 복구를 지원합니다.역할 기반 접근 제어 (RBAC)
팀 멤버에게 역할(admin 또는 member)을 부여하여 적절한 권한 범위를 설정합니다. 모든 작업은 사용자의 조직과 스토어로 범위가 지정됩니다.
API 보호
속도 제한
모든 API 엔드포인트에 속도 제한이 적용됩니다:| 플랜 | 제한 |
|---|---|
| Free | 100 요청/분 |
| Starter | 500 요청/분 |
| Pro | 2,000 요청/분 |
| Enterprise | 맞춤 |
X-RateLimit-* 헤더에 포함됩니다.
무차별 대입 방어
인증 엔드포인트에는 추가 보호가 적용됩니다:- IP 및 이메일 주소별 로그인 시도 제한
- 반복 실패 시 지수 백오프
- 과도한 실패 후 계정 잠금
입력 검증
모든 요청 본문은 엄격한 스키마로 검증됩니다. 다음을 거부합니다:- SQL 인젝션 패턴
- XSS 페이로드
- 경로 탐색 시도
- 과대 페이로드
애플리케이션 보안
보안 헤더
모든 API 응답에 포함되는 헤더:CSRF 보호
상태 변경 작업(POST, PUT, PATCH, DELETE)에는 Double Submit CSRF 토큰 패턴이 적용됩니다. API 키 인증 요청은 크로스 사이트 공격에 취약하지 않으므로 CSRF를 우회합니다.SSRF 방지
웹훅 URL과 이미지 URL을 검증하여 서버 측 요청 위조를 방지합니다:- 사설 네트워크 대역(RFC 1918) 차단
- 클라우드 메타데이터 엔드포인트 차단
- 웹훅은 HTTPS URL만 허용
쿠키 보안
대시보드 세션 쿠키 설정:HttpOnly— JavaScript로 접근 불가Secure— HTTPS 전용SameSite=Strict— 크로스 사이트 요청 공격 방지- 암호화 서명으로 변조 방지
모니터링 및 감사
감사 로그
보안 관련 이벤트가 위험도 점수와 함께 기록됩니다:- 인증 이벤트 (로그인, 로그아웃, MFA, 실패 시도)
- 인가 위반
- API 키 생성, 교체, 삭제
- 속도 제한 위반 및 무차별 대입 시도
에러 처리
운영 환경 에러 응답은 내부 정보를 노출하지 않습니다:- 스택 트레이스 없음
- 데이터베이스 에러 메시지 없음
- 내부 파일 경로 없음
- 구조화된 에러 코드와 일반 에러 메시지
의존성 관리
- 정기적인 의존성 감사(
npm audit) - CI/CD에서 자동 취약점 스캔
- 운영 의존성에 알려진 취약점 없음
취약점 신고
보안 취약점을 발견하신 경우 책임 있는 공개를 부탁드립니다:- 이메일: security@headlesscommerce.io
- 보안 취약점에 대해서는 공개 GitHub 이슈를 열지 마세요
- 24시간 이내 확인, 72시간 이내 수정을 목표로 합니다
책임 있는 공개에 감사드리며, 허락하시면 보안 권고문에 신고자를 크레딧합니다.