본문으로 건너뛰기

웹훅과 연동

웹훅 서명 검증하기

서명은 JSON을 파싱하기 전, 원시 요청 본문에 대해 계산하고 상수 시간으로 비교하세요. 본문을 다시 직렬화하면 바이트가 달라지고, 서명은 다시는 맞지 않습니다.

절차

  1. 원시 본문을 바이트로 붙잡습니다. 대부분의 프레임워크는 기본적으로 파싱된 객체를 주는데, 그때는 이미 늦습니다.
  2. 바로 그 바이트에 대해, 자기 엔드포인트의 시크릿으로 서명을 계산합니다.
  3. 문자열 동등 비교 대신 상수 시간 비교로 맞춰 봅니다.
  4. 서명이 검증된 뒤에야 JSON을 파싱합니다.
  5. 통과하지 못한 것은 거부하고, 본문이 아니라 전달 ID를 로그에 남깁니다.

결과 확인 방법

진짜 전달은 검증을 통과하고, 같은 본문에서 한 글자만 바꾼 것은 통과하지 못합니다.

흔히 어긋나는 지점

  • 서명을 계산하기 전에 파싱했다가 다시 직렬화하는 것.
  • 핸들러보다 먼저 스트림을 다 읽어 버리는 본문 파싱 미들웨어.
  • 서명에 대한 단순 ===. 처리 시간으로 새어 나갑니다.
이 문서로 해결되었나요

도움이 되지 않았다면

플랫폼과 버전, 밟은 절차, 기대한 결과, 해당 워크스페이스나 QR 코드를 함께 적어 문의해 주세요. 무엇이든 첨부하기 전에 모든 비밀 정보를 가려 주세요.

지원팀에 문의