Giter Club home page Giter Club logo

webhooks.fyi's Introduction

Webhooks.fyi

Webhooks.fyi is a one-stop shop for information on how to build, consume, secure, maintain, and overall function with webhooks. While we've started with a heavy security focus with an eye towards future maintainability, we want to expand this into a clearing house for the best and worst practices you will see in the wild.

Our long term vision is two fold:

First, we want to continue to be THE place for people to learn how to safely consume webhooks from their favorite providers.

Second, we want to encourage providers to adopt practices that make their webhooks more reliable, secure, and easier to use.

If we're missing your favorite webhook provider, a thoughtful or useful analysis, or we've gotten something wrong, check out CONTRIBUTING.md for steps to lend a hand. Please keep contributions heavy on facts, supported by docs, and light on marketing.

Getting started

To install webhook.fyi:

npm install

To launch in dev:

npm run dev

Finally, open http://localhost:3000 in your browser to view the website.

To build prod

npm run build

webhooks.fyi's People

Contributors

aharveyfastspring avatar bobzilladev avatar caseysoftware avatar ebttran avatar espen avatar ezekg avatar gene1wood avatar ghepting avatar horlah avatar inconshreveable avatar jesus-escalona avatar leetrout avatar nickchenyx avatar onecricketeer avatar philnash avatar pranitbauva1997 avatar robjmills avatar russorat avatar sshkel avatar stmcallister avatar sudobinbash avatar swimburger avatar tasn avatar thebestpessimist avatar wiwichips avatar z4kn4fein avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webhooks.fyi's Issues

Add information in replay prevention about idempotency

Great website! Love the completeness.
It would be interesting to add information about idempotency in your replay prevention page.

Some web hook will send you an ID that is guaranteed to be unique on replay. Very useful to avoid doing work twice. This is too often forgotten by the consumer.

Propose to add CNCF CloudEvents webhook standards

This is a proposal to add CloudEvents under the "Standardisation Efforts" section.

CloudEvents is a CNCF incubating project.

https://cloudevents.io

CloudEvents is a specification for describing event data in common formats to provide interoperability across services, platforms and systems.

It provides specification on message modelling and event payload design multiple protocols from AQMP to HTTP and HTTP Webhooks.

This could also cover a fair bit on #33

I'll be happy to contribute to this one.

Add "Data Less" Webhooks

Source: https://www.reddit.com/r/programming/comments/x38ixt/webhooksfyi_a_site_about_webhook_best_practices/

Webhooks can be a little bit of a hassle when developing locally. That is probably why ngrok is pushing them.
What I am missing from this overview, is the data less webhook. Sending a webhook without any authentication and without any payload (except maybe a single id), but only to notify new info can be retrieved.
This will really simplify the security procedures and also mean that data will only flow in one direction.

Create Badges

Badges: Webhooks.fyi:

  • listed

  • verified

  • profile completeness

  • highlighted

  • upvoted

fixes on mTLS page

Source: https://www.reddit.com/r/programming/comments/x38ixt/webhooksfyi_a_site_about_webhook_best_practices/

Fixes:

Webhooks leverage mTLS the same way protocols like HTTPS, SQL, and SSH

  • SQL is not a network protocol
  • SSH doesn't and can't use mTLS, as it not based on TLS, but on The Secure Shell (SSH) Transport Layer Protocol.
  • And of course webhooks leverage mTLS is the exact same way HTTPS does. HTTPS is HTTP sent through a TLS, and mTLS is a part/feature of TLS.

However, mTLS is often difficult to configure

  • Change it to "when compared against other methods like HMAC and Basic Auth"

Missed Pros

  • Revocation of trust on either side of the connection
  • You don't need to implement it, it's just hidden behind a flag and some configuration. Generally, if you understand PKI, there is no risk involved in an mTLS "implementation".

Classification

All in all, I can't agree with the "Very High" complexity rating, for sure the "Assymetric Keys" approach is much more difficult to implement, as it just seems to be somewhat like mTLS implemented at the application layer, and mTLS's biggest strength is that you don't need to implement it yourself, it is already provided by your TLS/HTTPS library.

Include more information about possible attack vectors and their mitigations

This website was posted on Hacker News, and there was an excellent comment posted about attack vectors - particularly timeout attacks and private IP attacks. I'd love learn more about these attacks in the Security section of this site, focusing on how to allow users to configure their webhook URLs.

https://news.ycombinator.com/item?id=32518208
Posted by cuu508 on 2022-08-19

There are some interesting attack vectors to be aware of if you run a service where users can define webhooks, and your service will will call the user-defined webhooks to notify about certain system events. In my case, a monitoring service which can send notifications by calling user-defined webhook.

  • Timeouts: the user can set up a webhook receiver that takes very long to generate a response. Your service must be able to deal with that.
  • Timeouts (slowloris): the webhook target could be sending back one byte at a time, with 1 second pauses inbetween. If you are using, say, the "requests" python library for making HTTP requests, the "timeout" parameter will not help here
  • Private IPs and reserved IPs: you probably don't want users defining webhooks to http://127.0.0.1:/ and probing your internal network. Remember about private IPv6 ranges too
  • Domains that resolve to private IPs: attacker could set up foo.com which resolves to a private IP. It is not enough to just validate webhook URLs when users set them up.
  • HTTP redirects to private IPs. If your HTTP client library follows HTTP redirects, the attacker can set up a webhook endpoint that redirects to a private IP. Again, it is not enough to validate the user-supplied URL.
  • Excessive HTTP redirects. The attacker can set up a redirect loop - make sure this does not circumvent your timeout setting.

"Asymmetric Key Encryption" conflates Signing and Encryption

Signing with asymmetric keys is distinct from encryption, but the article conflates them.

https://webhooks.fyi/security/asymmetric-key-encryption

"Asymmetric key encryption" is what you do to make contents secret, like in GPG where you're sending secret messages to some recipient you know holds a private key. With webhook messages the sender holds the private key, not the recipient (as the article correctly mentions), so it's not encryption; it's only signature generation & validation you're talking about. Using the word encryption to mean signing is confusing and non-standard.

Suggest replacing some terms to use the more industry standard terms, and to make the article most consistent, e.g., but not limited to:

  • Encryption --> Signing
  • Encrypt --> Sign
  • Decryption --> Validation
  • Decrypt --> Validate or Verify (depending on the context)

Thanks for the overall helpful guide!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.