결제 페이지를 개발하거나 유지 관리하는 경우 PCI 6.4.3에 의거해 다음 요건이 포함된 PCI DSS v4를 접할 수 있습니다.
소비자의 브라우저에서 로드되고 실행되는 모든 결제 페이지 스크립트는 다음과 같이 관리됩니다.
이 요건을 준수하는 한 가지 방법은 SRI(Subresource Integrity) 같은 기법을 사용하는 것입니다. 그러나 Google Pay JavaScript(pay.js) 개발 및 출시 프로세스는 SRI 같은 기법에서 요구하는 장기간 유지되는 안정적인 해시를 허용하지 않습니다.
iFrame 내의 스크립트는 상위 DOM에 액세스할 수 없으므로 샌드박스형 iframe을 사용하면 규정 준수와 관련된 모든 문제가 해소됩니다. 예를 보려면 다음 그림을 참조하세요.
<iframe
src="https://cdn.somewhereelse.com"
allow="payment"
sandbox="allow-scripts allow-popups allow-same-origin allow-forms">
</iframe>
이 경우 도메인 'cdn.somewhereelse.com'은 Google Pay의 pay.js JavaScript 파일을 로드합니다. 트랜잭션이 성공한 후에는 필요한 경우 내부 iframe이 window.postMessage()와 같은 메커니즘을 통해 상위 페이지와 통신할 수 있습니다.
Google Pay가 모든 브라우저에서 작동하려면 allow=”payment”
외에도 다음의 4가지 샌드박스 속성 값이 필요합니다.
allow-scripts
iframe이 스크립트를 실행하도록 허용합니다(예: pay.js).
allow-popups
임베드된 페이지가 '하위 브라우징 컨텍스트'를 만들도록 허용합니다. 실제로 이 플래그를 사용하면 사용자가 링크를 클릭할 때 임베드된 iframe이 새 탭과 창을 열 수 있습니다.
allow-same-origin
이 속성 값을 설정하지 않으면 브라우저 사용 중 여러 상황에서 장애가 발생합니다. 설정하면 iframe이 상위 저장소와 쿠키에 액세스할 수 있습니다.
allow-forms
Google Pay 로그인과 같은 양식이 데이터를 제출할 수 있도록 허용합니다.
이 테스트 페이지에서 다양한 iframe 샌드박스 값의 역할을 확인할 수 있습니다.
Google Pay는 Shopify와 제휴하여 위의 솔루션을 구현했습니다. Shopify는 샌드박스형 iframe을 사용하여 Google Pay 버튼을 표시함으로써 PCI DSS v4 감사를 성공적으로 통과할 수 있었습니다. Shopify는 이렇게 언급했습니다.
Shopify는 결제의 무결성을 유지하고 PCI DSS V4 요건을 준수할 수 있도록 Shopify Checkout을 안전한 샌드박스 환경에서 Google Pay 코드가 실행되도록 설계하였습니다.
Ilya Grigorik, Shopify 수석 엔지니어
Shopify가 샌드박스형 iframe을 사용하여 결제 솔루션을 개발한 방법에 대한 자세한 내용은 Shopify의 블로그 게시물 '샌드박싱을 사용한 Shopify의 고성능, PCI DSS v4 규정 준수 결제 솔루션 구현'에서 확인할 수 있습니다.
샌드박스형 iframe에 Google Pay 통합을 구현하면 PCI DSS v4 요건을 준수하는 데 도움이 될 수 있습니다. 구현에 추가적인 도움이 필요하면 Google Pay & Wallet Console에 로그인하여 지원 티켓을 생성하세요. 또한 Discord의 #payments 채널에서 개발자 커뮤니티에 가입할 수 있습니다.
향후 업데이트 소식을 확인하려면 X에서 @GooglePayDevs를 팔로우하세요. 질문이 있다면 @GooglePayDevs를 태그하고 트윗에 #AskGooglePayDevs를 포함해 주세요.