개발 slecs

결제 수수료·공급가 서버 재검증으로 금액 조작 원천 차단

목차

수수료/공급가 조작 방지 보안 강화

수수료/공급가 조작 방지 보안 강화 기능을 구현했음.

배경

클라이언트에서 수수료율이나 공급가를 조작해서 서버로 전달하면 실제보다 적은 금액이 계산되는 취약점이 있었음. 서버에서 반드시 재검증이 필요함.

구현 방식

요청 파라미터의 금액/요율 관련 값을 무시하고, 서버에서 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

첫 댓글 달아줘.