Package Scope
Package name: backend
Overview
단순 AUTO_INCREMENT 사용 시 발생하는 보안 문제(ID 추측을 통한 크롤링 테러, 회원 수 노출)를 방지하기 위한 PK 보안 전략을 정립합니다.
Describe the solution you'd like
1. TSID 대안 고민과 한계
- TSID(시간정렬 정수)는 보안과 인덱스 속도가 뛰어나 고민을 진행함.
- 그러나 서버 시계 역전(Clock Skew) 시 발생할 수 있는 DB 유니크 중복 충돌 위험 및 자바 JPA
isNew() 판정 관련 쿼리 오버헤드가 존재하는 한계가 있음.
2. 최종 결정 전략
- DB 내부 PK: DB 조인 및 인덱스 성능 최적화를 위해 8바이트 정수
id (BIGINT AUTO_INCREMENT)를 내부용으로 사용.
- 외부 노출 식별자: API/URL 노출 시에는 해커의 ID 추측 및 크롤링 테러를 차단하기 위해 36자리
public_id (UUID)를 별도로 사용.
- 중계 테이블: 복합 PK 사용 시 발생하는 JPA 복합키 클래스 파편화를 방지하기 위해 단일 대리키
id (PK) + UNIQUE KEY 제약조건 적용.
Additional context
- 외부 식별자
public_id 적용을 통해 내부 DB 성능과 외부 보안을 동시에 확보함.
Package Scope
Package name:
backendOverview
단순 AUTO_INCREMENT 사용 시 발생하는 보안 문제(ID 추측을 통한 크롤링 테러, 회원 수 노출)를 방지하기 위한 PK 보안 전략을 정립합니다.
Describe the solution you'd like
1. TSID 대안 고민과 한계
isNew()판정 관련 쿼리 오버헤드가 존재하는 한계가 있음.2. 최종 결정 전략
id(BIGINT AUTO_INCREMENT)를 내부용으로 사용.public_id(UUID)를 별도로 사용.id(PK) +UNIQUE KEY제약조건 적용.Additional context
public_id적용을 통해 내부 DB 성능과 외부 보안을 동시에 확보함.