# 토스페이먼츠 웹훅/콜백 보안 설정

## 개요
토스페이먼츠 웹훅과 콜백에 HMAC 서명 검증을 추가하여 보안을 강화했습니다.

## 환경 변수 설정

다음 환경 변수를 설정해야 합니다:

```bash
# 토스페이먼츠 API 키
TOSS_API_KEY=your_toss_api_key_here

# 토스페이먼츠 시크릿 키 (서명 검증용)
TOSS_SECRET_KEY=your_toss_secret_key_here
```

## 엔드포인트

### 1. 콜백 (서명 검증 선택적)
- **URL**: `/api/v2/payments/toss/callback`
- **Method**: POST
- **서명 검증**: 선택적 (서명이 있으면 검증, 없으면 경고만)
- **용도**: 프론트엔드 리다이렉트용

### 2. 웹훅 (서명 검증 필수)
- **URL**: `/api/v2/payments/toss/webhook`
- **Method**: POST
- **서명 검증**: 필수 (서명이 없으면 401 오류)
- **용도**: 서버 간 통신용

## 서명 검증 로직

1. **헤더에서 서명 추출**: `X-Toss-Signature` 또는 `X-Signature`
2. **HMAC-SHA256으로 서명 생성**: `HMAC-SHA256(secret_key, payload)`
3. **타이밍 공격 방지**: `hmac.compare_digest()` 사용
4. **서명 불일치 시**: 401 Unauthorized 반환

## 보안 특징

- ✅ **HMAC 서명 검증**: 요청의 무결성 보장
- ✅ **타이밍 공격 방지**: 안전한 문자열 비교
- ✅ **개발 환경 지원**: 시크릿 키가 없으면 검증 건너뜀
- ✅ **상세 로깅**: 검증 성공/실패 로그 기록
- ✅ **이중 검증**: 웹훅과 콜백 모두 지원

## 토스페이먼츠 설정

토스페이먼츠 대시보드에서 다음 URL을 설정하세요:

1. **콜백 URL**: `https://yourdomain.com/api/v2/payments/toss/callback`
2. **웹훅 URL**: `https://yourdomain.com/api/v2/payments/toss/webhook`

## 주의사항

- `TOSS_SECRET_KEY`는 절대 공개하지 마세요
- 프로덕션 환경에서는 반드시 시크릿 키를 설정하세요
- 토스페이먼츠에서 제공하는 실제 서명 검증 방법을 확인하세요
