이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
프로모션 보상 중복 지급 방지를 직접 구현해야 하는 것으로 알고 있습니다.
그런데 grantPromotionRewardForGame의 경우 클라이언트에서 토스 서버에서 발급해 준 Key 등이 없어도 보상을 받을 수 있는 구조로 보입니다.
이러면 클라이언트 레벨에서 동일한 userKeyForGame, PromotionCode 쌍에 대해서 중복 지급을 방지하는 로직을 작성하더라도 클라이언트 변조에는 취약한 구조아닌가요?
- 현재 grantPromotionRewardForGame는 클라이언트 변조 시 중복 지급이 가능한 구조가 맞을까요? (원천적으로 방지가 불가능한 것이 맞을까요)
- 토스 측에서 권장하는 검증 방식에 대해 안내 부탁드립니다.
제가 생각한 검증 흐름은 대략 이러한데 비슷한 구현이 가능한지, 아니면 추후 이러한 검증 장치가 추가될 수 있을지 궁금합니다.
- (클라이언트 → 게임 서버) 프로모션 보상 수령 요청 (userKeyForGame, promotionCode 전달)
- ( 게임 서버 → 토스 서버) 프로모션 지급 내역 확인 (userKeyForGame + promotionCode)
- (게임 서버 → 토스 서버) 지급 내역이 없다면 프로모션 지급 Key생성 요청
- (게임 서버 → 클라이언트) 프로모션 지급 key 전달
- (클라이언트 → 토스 서버) 프로모션 지급 key로 보상 수령