Instagram Webhook署名はraw bodyで検証する――JSON再生成との境界
公開コードに基づく一次資料分析本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。
同じJSON内容でも空白やkey順が変わるとbyte列が変わる条件で、署名検証前にbodyを再生成していないか。
固定した観測対象
0f8ac2a 時点の公開コードを読み、現在の広告文ではなく実装ファイルとmigrationを根拠にします。コードから観測できること
- Webhook routeと署名専用テストが公開され、署名検査が独立した検証対象になっている。
- 署名は意味的に同じJSONかではなく受信したraw bodyに対して計算する必要があり、parse後の再stringifyを使うと正規イベントを拒否する可能性がある。
- 不正署名時は返信や友だち更新などの副作用へ到達しないことをD1件数と合わせて確認する。
再現・追加測定の手順
- 同じobjectを異なる空白・key順でserializeする
- 各raw bodyに対応する署名を作る
- 正しい組合せと入替えた組合せを送る
- 応答とD1副作用を比較する
この資料だけでは証明できないこと
- ローカルテストはCloudflareがheader/bodyを渡す実環境差を完全には再現しない。
- 署名成功はMeta App権限や対象accountの正当性まで保証しない。
このページは新しいcommit、実測ログ、API仕様変更が得られた時点で更新します。古い観測条件と現在仕様を混同しないため、固定commitへのリンクを残します。