웹훅과 연동
웹훅 서명 검증하기
서명은 JSON을 파싱하기 전, 원시 요청 본문에 대해 계산하고 상수 시간으로 비교하세요. 본문을 다시 직렬화하면 바이트가 달라지고, 서명은 다시는 맞지 않습니다.
절차
- 원시 본문을 바이트로 붙잡습니다. 대부분의 프레임워크는 기본적으로 파싱된 객체를 주는데, 그때는 이미 늦습니다.
- 바로 그 바이트에 대해, 자기 엔드포인트의 시크릿으로 서명을 계산합니다.
- 문자열 동등 비교 대신 상수 시간 비교로 맞춰 봅니다.
- 서명이 검증된 뒤에야 JSON을 파싱합니다.
- 통과하지 못한 것은 거부하고, 본문이 아니라 전달 ID를 로그에 남깁니다.
결과 확인 방법
진짜 전달은 검증을 통과하고, 같은 본문에서 한 글자만 바꾼 것은 통과하지 못합니다.
흔히 어긋나는 지점
- 서명을 계산하기 전에 파싱했다가 다시 직렬화하는 것.
- 핸들러보다 먼저 스트림을 다 읽어 버리는 본문 파싱 미들웨어.
- 서명에 대한 단순
===. 처리 시간으로 새어 나갑니다.
이 문서로 해결되었나요
도움이 되지 않았다면
플랫폼과 버전, 밟은 절차, 기대한 결과, 해당 워크스페이스나 QR 코드를 함께 적어 문의해 주세요. 무엇이든 첨부하기 전에 모든 비밀 정보를 가려 주세요.
지원팀에 문의