successUrl 쿼리 파라미터 amount 값의 설계 의도 문의
안녕하세요. 토스페이먼츠 결제 연동 과정에서 보안 관련 질문이 있어 문의드립니다.
현재 이해한 결제 흐름
1. 클라이언트에서 widgets.setAmount()로 금액 설정 (UI 표시용)
2. 결제 요청 전 서버에 orderId와 실제 상품 금액을 저장 (보안 검증용)
3. 결제 인증 완료 후 successUrl에 amount 쿼리 파라미터가 포함되어 리다이렉트
4. 서버에서 저장된 실제 금액으로 승인 API 호출
질문사항
1. successUrl의 amount 파라미터 출처
- 이 값이 클라이언트 setAmount()에서 설정한 값인지요?
- 만약 그렇다면, 악의적 사용자가 브라우저 개발자 도구로 이 값을 조작할 수 있지 않나요?
2. amount 파라미터의 용도
- MCP 가이드에서 "돌아온 금액과 같은지 확인"하라고 하는데, 클라이언트에서 조작 가능한 값으로 검증하는 것이 의미가 있나요?
- 실제로는 서버에 저장한 신뢰할 수 있는 금액으로만 승인해야 하는 것 아닌가요?
3. 설계 의도
- 조작 가능한 클라이언트 값을 쿼리 파라미터로 되돌려주는 이유가 궁금합니다
- 디버깅, 로깅, 또는 다른 특별한 목적이 있는 건가요?
현재 구현 방식
저희는 현재 successUrl의 amount는 검증에 사용하지 않고, 서버에 미리 저장한 실제 상품 금액으로만 승인 API를 호출하고 있습니다. 이것이 올바른 방식인지 확인해주세요.
감사합니다.
현재 이해한 결제 흐름
1. 클라이언트에서 widgets.setAmount()로 금액 설정 (UI 표시용)
2. 결제 요청 전 서버에 orderId와 실제 상품 금액을 저장 (보안 검증용)
3. 결제 인증 완료 후 successUrl에 amount 쿼리 파라미터가 포함되어 리다이렉트
4. 서버에서 저장된 실제 금액으로 승인 API 호출
질문사항
1. successUrl의 amount 파라미터 출처
- 이 값이 클라이언트 setAmount()에서 설정한 값인지요?
- 만약 그렇다면, 악의적 사용자가 브라우저 개발자 도구로 이 값을 조작할 수 있지 않나요?
2. amount 파라미터의 용도
- MCP 가이드에서 "돌아온 금액과 같은지 확인"하라고 하는데, 클라이언트에서 조작 가능한 값으로 검증하는 것이 의미가 있나요?
- 실제로는 서버에 저장한 신뢰할 수 있는 금액으로만 승인해야 하는 것 아닌가요?
3. 설계 의도
- 조작 가능한 클라이언트 값을 쿼리 파라미터로 되돌려주는 이유가 궁금합니다
- 디버깅, 로깅, 또는 다른 특별한 목적이 있는 건가요?
현재 구현 방식
저희는 현재 successUrl의 amount는 검증에 사용하지 않고, 서버에 미리 저장한 실제 상품 금액으로만 승인 API를 호출하고 있습니다. 이것이 올바른 방식인지 확인해주세요.
감사합니다.
