유효한 웹훅 서명이라고 해서 이미 처리했다는 의미는 아... 노트

유효한 웹훅 서명이라고 해서 이미 처리했다는 의미는 아닙니다.

웹훅은 유효한 서명을 가지고도 중복될 수 있습니다. 이 차이점은 Stripe Digital Seller Kit의 무료 샘플을 사용하여 탐구되었습니다. 샘플에는 웹훅 서명 확인을 위한 PHP 파일과 서명된 다운로드 링크 도우미가 포함되어 있습니다. 실제 Stripe 요청이나 결제 없이 PHP 8.5.4에서 로컬 테스트가 수행되었습니다.핵심 웹훅 테스트는 verify_webhook 함수에 대한 두 호출 모두 이벤트를 반환했음을 밝혔습니다. 이는 본문과 서명이 일치하고 타임스탬프가 허용된 5분 이내에 있었기 때문에 발생했습니다. 제공된 서명 검사기는 이전에 처리된 이벤트를 기억하지 않습니다. 본문을 수정하거나 타임스탬프 제한을 초과하면 올바르게 거부되어 서명 무결성 및 최신성 검사를 입증했습니다.그러나 이러한 검사는 중복 이벤트 처리를 방지하지 못합니다. 중복 처리를 위해서는 이미 처리된 주문을 추적하는 별도의 메커니즘이 필요합니다. 두 요청이 동시에 도착하면 둘 다 쓰기 전에 이전 기록이 없는 것을 볼 수 있는 경쟁 조건이 발생할 수 있습니다. 이를 방지하려면 데이터베이스 트랜잭션이나 파일 잠금을 사용하여 확인 및 처리 기록을 원자적으로 보호해야 합니다.전체 Stripe Digital Seller Kit는 별도의 중복 방지 주문 처리를 제공한다고 알려져 있으며, 이는 이 분석에서 테스트되지 않았습니다. 다운로드 링크 도우미도 테스트되었으며 유효한 토큰, 잘못된 ID, 잘못된 비밀번호 및 만료된 링크에 대해 올바른 동작을 확인했습니다. 이러한 테스트는 환불 처리 또는 다운로드 횟수와 같은 더 광범위한 기능을 다루지 않습니다. 작성자는 혼란을 피하고 올바른 중복 처리를 보장하기 위해 "잘못된 서명"과 "동일한 유효한 이벤트 두 번"을 별도로 테스트할 것을 강조합니다.