KG이니시스 웹표준 Signature 생성방법 (Javascript)

남양주개발자

·

2020. 2. 13. 17:06

728x90
반응형

signature 개요

결제요청시 등 HTTPS post 요청시 가맹점의 요청이 정상적인 요청인지 여부 / 사용자의 위변조 방지를 위해 일부 데이터를 SHA256 으로 Hash 한 값

signature 는 form.submit 시 적용됩니다.

signature 첨부 대상

  • INIpay Standard 의 모든 요청 

  • 결제(인증), 승인 APIsignature 생성 대상 필드(Target) 

  • 모든 요청의 signature 의 생성방법 동일하며, 요청별로 생성 대상 필드가 다름 * 요청별로 명시된 “signature 생성 대상(Target) 필드”를 참조 

  • 인증요청(결제요청) : oid, price, timestamp → “[TABLE 1-2] signature 생성 대상(Target) 필드“참조 

  • 승인요청 : authToken, timestamp → “[TABLE 2-3] 승인요청 signature 생성 대상(Target) 필드” 참조

signature 생성 방법

 

위변조 방지를 위한 보안조치로서 필수 체크 데이터를 NVP 방식으로 연결한 데이터를 SHA256 으로 Hash한 값 

* NVP : name and value parameters 

ex) name=value&name=value&name=value&name=value 

필드 순서유지(알파벳순), 마지막 &는 생략, 공백생략, 모든대상 필드는 Form 에 설정되는 데이터와 동일한 값을 이용

 

signature 생성 샘플(결제요청)

 

Target 데이터(signParam)

oid=INIpayTest_1361252896871&price=1004&&timestamp=1361252896871

Hash 데이터( Target 데이터를 SHA256 Hash 한 값)

ec1e9c63ddad0b81f316ada2e3861e81db5f4f6652d9ff0f255b4cb5499ce893

 

잘못된 Target 데이터 생성 예

 

띄어쓰기 및 & 중복의 경우

원본

oid=1231231&price=10000& &timestamp=1335247243103

수정

oid=1231231&price=10000&timestamp=1335247243103

 

마지막 &가 붙는 경우

원본

oid=1231231&price=10000&timestamp=1335247243103&

수정

oid=1231231&price=10000&timestamp=1335247243103

 

Javascript example

/**
 * import { sha256 } from 'js-sha256';
 * import qs from 'qs';
 * @param {obj}
 * oid string
 * price string
 * timestamp number
 */
export const makeSignature = (obj) => {
  // oid=1231231&price=10000& &timestamp=1335247243103      
  return sha256(qs.stringify(obj));
}

 

 

728x90
반응형

💖 저자에게 암호화폐로 후원하기 💖

아이콘을 클릭하면 지갑 주소가자동으로 복사됩니다

0개의 댓글