15

Githubは、プロジェクトがWebhookを使用して更新されたときにURLに通知する方法を提供します。

サーバーの受信後フックに送信された投稿が実際にgithubから送信されたことを確認するにはどうすればよいですか?

送信者のIPアドレスを確認する必要がありますか、それとも認証チェックをどこかに送信できますか?誰かがgithubからのふりをしてリクエストをスプーフィングしようとしないようにしたいと思います。

1つのオプションは、 PubSubHubbubを介してフックを設定し、そのオプションを使用しhub.secretて投稿本文のSHA1HMAC署名を作成することです。ただし、そのためには、ユーザーが必要なときにサイトへの受信後のコールバックを設定するのを待つのではなく、サーバーがリクエストを設定する必要があります。むしろ、ユーザーに提供したURLを投稿URLに貼り付けるように依頼したいと思います。

4

5 に答える 5

8

件名に関する GitHub のドキュメントをご覧ください。HTTPS と基本認証の使用が提案されています。

具体的には、ペイロード URL を次の形式で設定します。

https://yourUser:yourPass@yoursite.net/path

多数のユーザーがいる場合は、それぞれに異なるユーザー名とパスワードを与えます。彼らがそのパスワードを非公開にしていると仮定すると、認証要求が実際に GitHub とそのアカウントからのものであると信頼できます。

参照: https://github.com/blog/237-basic-auth-post-receives

于 2013-12-31T11:51:51.293 に答える
8

Github のリクエスト後の IP を確認してみてください: 207.97.227.253、50.57.1​​28.197、108.171.174.178

于 2012-02-21T17:55:06.530 に答える
5

@mnmlの回答に加えて、2番目のステップは、APIを呼び出して、指定された情報がプロジェクトの最後の既知のコミットと一致することを確認することです。これは、OpenIDが渡されたデータが有効であることを確認するために使用するのと同じプロセスです。

したがって、最初にIPをチェックするだけで、ダムリプライ攻撃を打ち負かすことができます。次に、受け取った情報が正しいかどうかgithubに尋ねることができます。

GET /repos/:user/:repo/commits/:sha
于 2012-02-21T18:31:03.237 に答える
3

推測しにくい URL で Webhook を見つけることができます。言う:

https://my-host.com/webhooks/E36006BE2C4BABDEEF307C77E34F415B/my-hook

(これは 128 ビットのランダム データです。快適なサイズに増やしてください)。この URL を安全に保つために github を信頼できると仮定すると、その URL にアクセスするクライアントは信頼できる可能性が高くなります。

URL が危険にさらされた場合は、新しいランダム URL を生成して Web サーバーを更新するだけです。

エントロピーの適切なソースを使用していることを確認してください...

于 2012-03-02T15:47:21.923 に答える