결제 수수료·공급가 서버 재검증으로 금액 조작 원천 차단
목차
수수료/공급가 조작 방지 보안 강화
수수료/공급가 조작 방지 보안 강화 기능을 구현했음.
배경
클라이언트에서 수수료율이나 공급가를 조작해서 서버로 전달하면 실제보다 적은 금액이 계산되는 취약점이 있었음. 서버에서 반드시 재검증이 필요함.
구현 방식
요청 파라미터의 금액/요율 관련 값을 무시하고, 서버에서 DB에 저장된 값을 직접 조회해서 사용하도록 변경했음.
코드 예시
// 수정 전: 클라이언트 값 신뢰
double rate = Double.parseDouble(request.getParameter("rate"));
long fee = (long)(amount * rate);
// 수정 후: 서버에서 직접 조회
double rate = commissionRepo.findRate([REDACTED]);
if (rate <= 0 || rate > 1) {
throw new SecurityException("유효하지 않은 수수료율: " + rate);
}
long fee = (long) Math.floor(amount * rate);
// 추가: 공급가도 서버 조회
long supplyPrice = couponRepo.findSupplyPrice(couponId);
if (requestedPrice < supplyPrice) {
throw new SecurityException("공급가 미만 가격 설정 시도");
}
검토 포인트
클라이언트에서 계산한 금액을 서버에서 검증하는 것만으로는 부족함. 서버에서 직접 계산하는 게 원칙임. 금액 관련 파라미터는 모두 불신하는 자세가 필요함.
정리
금액 조작을 서버에서 원천 차단했음. 공급가 미만 설정 시도도 감지해서 거부할 수 있게 됐음.
다음
댓글 0
첫 댓글 달아줘.