결제 연동 보안, 쇼핑몰 PG 연동 전 확인할 7가지 항목
결제 연동 보안은 카드 정보를 사이트가 직접 받지 않고, 결제 금액과 결과를 서버에서 PG사에 다시 확인하며, 비밀키를 서버 밖으로 노출하지 않는 세 가지가 기본입니다. 이 글에서는 PG 연동 전에 확인할 7가지 항목과 운영 전환 순서, 사고가 의심될 때의 대응을 정리했습니다.
PG 결제 연동은 어떻게 이루어지나
쇼핑몰이나 예약 사이트에서 카드 결제를 받으려면 PG(전자지급결제대행)사와 계약하고 사이트에 결제 기능을 연결합니다. 고객은 사이트에서 주문을 만들고, PG사가 제공하는 결제창에서 카드 정보를 입력하며, 결제가 끝나면 그 결과가 사이트로 돌아옵니다.
이 흐름에서 사이트가 할 일은 주문 정보를 정확히 만들고, 돌아온 결제 결과가 진짜인지 확인하는 것입니다. 결제창이 안전해도 결과를 확인하는 과정이 허술하면 사고가 납니다. 연동 방식과 세부 절차는 PG사마다 다르므로 계약한 PG사의 개발 문서를 기준으로 확인해야 합니다.
사이트와 PG사가 나눠 맡는 보안
아래 표는 결제 과정에서 사이트와 PG사가 각각 맡는 보안 영역을 비교한 것입니다.
| 단계 | PG사가 맡는 일 | 사이트가 맡는 일 |
|---|---|---|
| 주문 생성 | - | 주문 번호와 금액을 서버에서 만들고 저장 |
| 카드 정보 입력 | 결제창에서 카드 정보 처리 | 카드 정보를 직접 받거나 저장하지 않기 |
| 결제 승인 | 카드사와 승인 처리 | 승인 결과를 서버에서 PG사에 다시 조회 |
| 결과 알림 | 결제 결과를 사이트로 전송 | 알림이 PG사에서 온 것인지 확인하고 중복 처리 막기 |
| 취소·환불 | 취소 처리 | 취소 권한을 가진 관리자 제한과 기록 |
표에서 보듯 카드 정보 자체는 PG사가 처리하지만, 금액이 맞는지와 결과가 진짜인지는 사이트가 확인해야 합니다. 이 부분이 결제 연동 보안 점검의 중심입니다.
PG 연동 전 확인할 결제 연동 보안 7가지
개발을 맡긴 업체와 함께 아래 항목을 하나씩 확인합니다.
- 카드 정보 미보관: 카드 번호를 사이트 입력 폼으로 받지 않고, PG사 결제창이나 PG사가 제공하는 방식으로만 처리합니다.
- 금액 서버 검증: 브라우저에서 넘어온 금액을 그대로 믿지 않고, 서버에 저장한 주문 금액과 PG사 승인 금액이 같은지 대조합니다.
- 결제 결과 재조회: 결제 완료 화면으로 돌아온 정보만으로 주문을 확정하지 않고, 서버에서 PG사에 결과를 다시 조회합니다.
- 결과 알림 검증: PG사가 보내는 결제 결과 알림이 실제 PG사에서 온 것인지 PG사 문서의 검증 방법으로 확인하고, 같은 알림이 두 번 와도 한 번만 처리합니다.
- 비밀키 관리: PG사에서 받은 비밀키는 서버 설정에만 두고, 화면 소스나 공개 저장소, 메신저에 남기지 않습니다. 테스트 키와 운영 키도 나눠 씁니다.
- HTTPS 적용: 주문서와 결제 관련 페이지를 포함해 사이트 전체를 HTTPS로 엽니다.
- 기록과 권한: 결제·취소 기록을 남기되 카드 정보나 비밀키가 로그에 찍히지 않게 하고, 취소·환불 권한은 필요한 관리자에게만 줍니다.
그림의 항목 가운데 금액 검증과 결과 재조회는 사이트 개발 단계에서 정해지는 부분이라 나중에 고치기 어렵습니다. 개발을 맡길 때 요구사항에 미리 적어 두세요. 사이트 전체를 HTTPS로 여는 설정은 HTTPS 강제와 보안 헤더 설정에서 따로 다뤘습니다.
테스트에서 운영으로 전환하는 순서
PG 연동은 대부분 테스트 환경에서 먼저 확인한 뒤 운영 환경으로 바꿉니다. 전환할 때 아래 순서를 지키면 실수를 줄일 수 있습니다.
- 테스트 결제 확인: 정상 결제, 결제 실패, 결제 취소, 중간에 창을 닫은 경우를 모두 시험합니다.
- 금액 대조 확인: 주문 금액과 승인 금액이 다를 때 주문이 확정되지 않는지 확인합니다.
- 운영 키로 교체: 테스트 키를 운영 키로 바꾸고, 테스트 키가 소스에 남지 않았는지 확인합니다.
- 소액 실결제: 운영 환경에서 소액으로 결제와 취소를 한 번씩 해 봅니다.
- 모니터링 시작: 첫 주에는 PG사 관리자 화면의 거래 내역과 사이트 주문 내역이 맞는지 매일 대조합니다.
그림의 마지막 단계처럼 거래 내역 대조는 운영 초기뿐 아니라 매달 한 번은 해 두는 것이 좋습니다. 결제는 됐는데 주문이 없거나, 주문은 확정됐는데 결제가 없는 경우를 일찍 찾을 수 있습니다.
결제 사고가 의심될 때
주문 금액과 결제 금액이 맞지 않는 거래가 보이면 해당 주문의 처리를 멈추고 PG사 고객센터에 알립니다. 비밀키가 노출됐다고 의심되면 PG사 관리자 화면에서 키를 다시 발급하고 기존 키를 사용 중지합니다. 해킹이 의심된다면 홈페이지 해킹 대처 순서를 함께 따르세요.
디코랩이 돕는 방식
디코랩은 쇼핑몰과 웹 서비스 제작, 운영 중인 사이트의 유지보수·개선을 합니다. 결제 연동이 필요한 사이트는 포함 범위와 일정, 비용을 상담 후 제안합니다. 자세한 범위는 디코랩 서비스 소개에서 확인할 수 있습니다.
자주 묻는 질문
카드 정보를 저장해 두면 재구매가 편하지 않나요?
카드 정보를 사이트가 직접 보관하면 유출 위험과 관리 책임이 크게 늘어납니다. 재결제가 필요하다면 PG사가 제공하는 정기결제나 간편결제 기능을 쓰는 방법을 PG사에 문의하세요.
PG사 결제창을 쓰면 사이트 쪽은 신경 쓸 게 없나요?
결제창은 PG사가 맡지만 주문 금액 검증, 결과 확인, 비밀키 관리는 사이트 몫입니다. 이 부분이 빠지면 결제창이 안전해도 문제가 생길 수 있습니다.
비밀키가 소스 저장소에 올라갔다면 어떻게 하나요?
저장소에서 지우는 것만으로는 기록이 남을 수 있습니다. PG사 관리자 화면에서 키를 새로 발급해 교체하고 기존 키를 사용 중지하세요.
결제 기능을 나중에 추가해도 되나요?
가능하지만 주문과 회원 구조를 처음부터 결제를 염두에 두고 만들면 추가 작업이 줄어듭니다. 결제가 필요한 시점은 사업 계획에 맞춰 미리 정해 두세요.
결제 연동을 준비하고 있거나 운영 중인 결제 기능을 점검받고 싶다면 사이트 주소와 쓰고 있는 PG사를 적어 디코랩 프로젝트 문의로 보내 주세요.
댓글0
댓글 작성 권한이 없습니다