[SEO-BETTER-PAY] membership 기획

Welcome to Seoyun Dev Log·2025년 3월 24일
0

membership 회원 관리

✅ 1. 회원 가입 / 탈퇴

  • 이메일, 휴대폰 번호, 비밀번호 등 입력받아 등록
  • 필수 정보 유효성 검사
  • 탈퇴 요청 처리 (soft delete 또는 완전 삭제)

✅ 2. 로그인 / 로그아웃

  • 로그인: ID/PW 또는 OAuth2, 인증 성공 시 토큰(JWT 등) 발급
  • 로그아웃: 토큰 무효화 (Blacklist 저장 등)

✅ 3. 인증(Authentication)

  • 비밀번호 확인
  • 토큰 검증
  • 토큰 갱신 (Refresh Token)

✅ 4. 인가(Authorization)

  • 역할(Role), 권한(Permission) 관리 (예: USER, ADMIN)
  • 서비스 접근 제어를 위한 권한 검증

✅ 5. 회원 정보 조회 / 수정

  • 마이페이지: 이름, 이메일, 휴대폰번호 등
  • 비밀번호 변경
  • 이메일 / 휴대폰 인증

✅ 6. 소셜 로그인 (선택)

  • Google, Kakao, Naver 등 OAuth2 기반 로그인
  • 소셜 계정 연동 / 해제

✅ 7. 사용자 상태 관리

  • 활성 / 비활성 / 탈퇴 / 정지 상태
  • 서비스 이용 제한 관리

✅ 8. 보안 관련 기능

  • 비밀번호 암호화 (예: bcrypt)
  • 비밀번호 찾기 (임시 비밀번호, 이메일 링크 등)
  • 2차 인증 (선택)

✅ 9. 사용자 Activity 로그 (선택)

  • 로그인 이력
  • 비정상 접근 기록
  • 계정 변경 이력

✅ 10. 기타 연동 기능

  • 다른 서비스(예: 결제, 알림, 고객센터 등)에서 회원 ID로 조회할 수 있도록 API 제공
  • 내부 인증용 API (예: 회원 ID → 유효성 검증)

🛡️ 1. 인증(Authentication)

🔐 1-1. 비밀번호 관리

  • 암호화 저장:
    • bcrypt 또는 argon2 사용
    • 절대 평문 저장 ❌
  • 비밀번호 정책:
    • 최소 8자 이상, 대소문자+숫자+특수문자 조합
    • 반복 문자 제한, 과거 비밀번호 재사용 금지 등

🔑 1-2. 로그인 방식

  • ID/PW 로그인
    • 로그인 시도 횟수 제한 (예: 5회 실패 시 잠금)
    • 지연 응답 방식으로 brute-force 방지
  • OAuth2 지원 (Google, Kakao 등)
    • 소셜 토큰 검증 후 자체 유저 등록 or 로그인 처리

📱 1-3. 2FA (2차 인증, 선택)

  • OTP (예: Google Authenticator)
  • SMS 또는 Email 기반 1회용 코드 인증

🛡️ 2. 인가(Authorization)

👤 2-1. Role/Permission 기반 접근 제어

  • 예: USER, ADMIN, SUSPENDED
  • Spring Security에서 @PreAuthorize("hasRole('ADMIN')") 등으로 제한

📦 2-2. 서비스 간 인가 처리 (MSA 환경)

  • 내부 서비스 간 통신 시 internal-token 혹은 mTLS 사용
  • Gateway에서 인증하고 내부 요청은 X-USER-ID header로 전달

🛡️ 3. 세션 & 토큰 관리

🪪 3-1. JWT (Access / Refresh Token)

  • Access Token:
    • 수명 짧게 (예: 15분~30분)
    • 요청 시 헤더에 Authorization: Bearer <token>
  • Refresh Token:
    • 수명 길게 (예: 2주~1달)
    • DB 저장 + Redis 저장 (보안 고려)

💥 3-2. 토큰 탈취 방지

  • HTTP-only, Secure cookie로 전달 (특히 Refresh Token)
  • IP / User-Agent 조합 검사
  • Logout 시 Refresh Token 강제 삭제

🛡️ 4. 공격 방어

🧠 4-1. CSRF 방지

  • REST API일 경우 CSRF 필요 없음 (stateless)
  • 만약 세션/폼기반이라면 CSRF 토큰 사용

🕵️ 4-2. XSS / SQL Injection 방지

  • 입력값 검증 (서버측 Validation + Frontend도 가능하면 적용)
  • ORM 사용 (JPA, MyBatis 등에서 PreparedStatement 사용)
  • Content-Security-Policy 설정

🔄 4-3. Rate Limiting

  • 로그인 / 인증 API에는 초당 호출 수 제한
  • Redis + Spring Cloud Gateway Filter로 구현 가능

🛡️ 5. 로깅 & 감사(Audit)

  • 로그인/로그아웃 시도 로그
  • 비밀번호 변경, 탈퇴, 권한 변경 등 중요한 이벤트 로그 기록
  • 별도 Audit Log Service 구성 가능
  • 로그 내 개인정보 마스킹 필수 (예: 이메일 → j***@gmail.com)

🛡️ 6. 암호화 & 데이터 보호

  • 비밀번호 외에도 중요한 개인정보(휴대폰, 이메일)는 AES 등으로 암호화 저장 가능
  • 민감한 데이터 전송 시 SSL/TLS 적용
  • S3나 외부 저장소에 파일 업로드 시에도 서버단 암호화 고려

🛡️ 7. 계정 보호 기능

  • 로그인 시 타 기기에서 로그인 여부 표시
  • 최근 접속 기록 조회
  • 계정 정지 기능 (SUSPENDED, BLOCKED 등 상태값)

🛡️ 8. 기타 고려사항

  • 탈퇴 후 데이터 관리: 법적 보관 vs 즉시 삭제
  • 비밀번호 찾기/재설정: 메일/SMS 통한 링크 방식, 링크는 일정 시간 내 만료
  • IP 기반 접근 제어 (특정 관리자 기능은 사내망 IP만 허용)

✅ 정리: 보안 기능 체크리스트 예시

항목구현 여부메모
비밀번호 암호화 저장 (bcrypt)
JWT Access/Refresh 구분
로그인 시도 제한
2차 인증⬜️선택 사항
토큰 저장 시 IP/User-Agent 검사⬜️추천
관리자 권한 분리
감사 로그 기록로그 마스킹 포함
Rate Limiting 적용⬜️Redis 추천
민감정보 암호화 저장⬜️AES256 고려
CSRF/XSS 대응

profile
하루 일지 보단 행동 고찰 과정에 대한 개발 블로그

0개의 댓글

관련 채용 정보