Webhook と連携
Webhook の署名を検証する
署名は、JSON を解析する前の生のリクエストボディに対して計算し、定数時間で比較してください。ペイロードを再直列化するとバイト列が変わり、署名は二度と一致しません。
手順
- 生のボディをバイト列として捕まえます。多くのフレームワークは既定で解析済みのオブジェクトを渡しますが、それではもう遅すぎます。
- そのバイト列そのものに対して、自分のエンドポイントのシークレットで署名を計算します。
- 文字列の等価比較ではなく、定数時間の比較で照合します。
- 署名が検証できてから、はじめて JSON を解析します。
- 通らないものは拒否し、ボディではなく配信IDをログに残します。
結果の確かめ方
本物の配信は検証を通り、同じペイロードで1文字だけ変えたものは通りません。
よくある落とし穴
- 署名を計算する前に解析して再直列化してしまう。
- ハンドラより先にストリームを読み切ってしまうボディ解析のミドルウェア。
- 署名に対する素朴な
===。処理時間から漏れます。
この記事で解決しましたか
解決しなかった場合
プラットフォームとバージョン、実行した手順、期待した結果、対象のワークスペースまたはQRコードを添えてご連絡ください。添付の前に、秘密情報はすべて伏せてください。
サポートに連絡する