NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
HrozbaObrana
Podvrhnuté prichádzajúce požiadavkyHMAC-SHA256 (alebo RFC 9421) nad id, časovou pečiatkou a surovým telom, overené cez Sentinel v konštantnom čase voči každému platnému kľúču; najviac 8 položiek a 4 KB na hlavičku.
Prehraté zachytené požiadavkyTolerancia 5 minút, podpísané id doručenia deduplikované 7 dní (+ unikátny index), strážca odtlačku tela pre nepodpísané id, nonce RFC 9421 zaznamenané atomicky s uloženým doručením.
Rozdelenie jednej správy na viacPodpísané id má prednosť pred akýmkoľvek Idempotency-Key; rovnaké id s iným telom sa odmietne.
Zisťovanie existujúcich endpointovNeznáme, zmazané a vypnuté kľúče odpovedajú rovnakou 404; kľúče nesú približne 190 bitov; neznáme kľúče nevyvolajú udalosť.
Vyčerpanie zdrojov na prichádzajúcej trase413 a 415 pred akýmkoľvek MAC, strážca odmietnutí na endpoint a IP, limit doručení na endpoint, spracovanie len vo fronte — a limit tela na webovom serveri pre prvé čítanie.
Príjemca odpovedá nekonečným telomČíta sa len do outbound.max_response_bytes so zapnutou aj vypnutou ochranou, v rámci 10 s; zaznamená sa response_truncated.
Nedôveryhodný obsahJSON len do polí, hĺbka ≤ 64; žiadne unserialize, eval ani extract; sanitizér pred uložením.
Únik tajných kľúčovŠifrované v pokoji, skryté, zobrazené raz, skryté v DTO, #[SensitiveParameter], nikdy v udalostiach, logoch, resources, about ani webhooks:endpoints; vymazané pri zmazaní.
SSRF a DNS rebindingOchrana Safe Fetch pri uložení aj pri každom kroku: len https, každá preložená adresa verejná, hostitelia aplikácie blokovaní, spojenie pripnuté na overené adresy, bez proxy, presmerovania vypnuté alebo znova overené.
Podvrhnutie a injekcia hlavičiekNázvy a hodnoty vlastných hlavičiek sa overujú; rámcové, podpisové a proxy hlavičky sa nikdy nedajú nastaviť.
Búrky opakovaníExponenciálny odstup s rozptylom, rešpektovaný Retry-After, obmedzenie na endpoint, automatické vypnutie.

Čo balík nerieši

  • Výmena riadkov niekým s prístupom na zápis do databázy — encrypted cast nie je viazaný na riadok, takže kto môže zapisovať do databázy, môže skopírovať šifrovaný kľúč jedného endpointu k inému.
  • Kompromitovaný odosielateľ alebo príjemca — kto má tajný kľúč, vie podpisovať.
  • Rozdiel hodín — odosielatelia aj príjemcovia potrebujú NTP; toleranciu môžete nastaviť pre každý endpoint.
  • Výstupná proxy pre celú aplikáciu — ochrana obchádza proxy z prostredia; s WEBHOOKS_SSRF_GUARD=off neexistuje žiadna ochrana cieľov (limit odpovede stále platí).
  • Zdieľané IP klientov — za load balancerom alebo CDN bez dôveryhodných proxy môžu chybné požiadavky cudzieho na minútu obmedziť skutočného odosielateľa.
  • Listenery WebhookReceived vo fronte — ukladajú sanitizovaný obsah do frontu nešifrovaný.
  • Poradie — medzi doručeniami na jeden endpoint nie je zaručené; príjemcovia radia podľa časovej pečiatky v obálke.
  • Obmedzenie odosielania na endpoint s úložiskom v pamäti platí len v rámci procesu.

Výnimky

V RoundlyConsulting\Webhooks\Exceptions, rozširujú WebhooksException (RuntimeException) a majú preložené správy. Konfiguračné hodnoty, ktoré sa nedajú načítať, vyhodia InvalidConfigurationException z package-toolkit:

VýnimkaVyhodí sa, keď
EndpointNotFoundExceptionfind() nenájde; prístup obmedzený na vlastníka dostane cudzí endpoint alebo doručenie.
EndpointNotAcceptingExceptionsend(), ping(), redeliver() alebo redeliverFailed() na vypnutý endpoint, send() na endpoint bez odberu — reason(): disabled alebo not_subscribed.
InvalidEndpointExceptionChybná URL, vlastná hlavička, zoznam odberov, importovaný tajný kľúč alebo voľba.
InvalidEventTypeExceptionChybný typ udalosti alebo typ mimo outbound.event_types.
PayloadTooLargeExceptionZakódované odchádzajúce telo nad outbound.max_payload_bytes.
PayloadPrunedExceptionReplay alebo opätovné doručenie doručenia, ktorého telo odstránila retencia.
DeliveryInProgressExceptionReplay doručenia, ktoré sa práve spracúva; opätovné doručenie takého, ktoré je ešte pending, sending alebo retrying.
DestinationBlockedExceptionOchrana pred SSRF odmietne odchádzajúcu URL pri uložení — reason(), blockedBy(), unresolved().
WebhookSignatureExceptionSchéma odmietne požiadavku — reason(): RejectionReason; because() pre vlastné schémy.
UnknownSchemeException · UnknownHandlerExceptionNeregistrovaný názov alebo alias, prípadne trieda, ktorá nie je schémou ani handlerom.
SecretRotationExceptionPrechodné obdobie v minulosti alebo dlhšie ako secrets.max_grace_seconds.
SigningUnavailableExceptionPočas pokusu pre endpoint, ktorého schéma nevie podpisovať — zachytí sa: doručenie zlyhá so signing.
PayloadSanitizerExceptionSanitizér vyhodil výnimku (odpoveď 500 sanitizer_failed).
InvalidWebhooksConfigurationExceptionKonfiguračný kľúč s triedou neukazuje na implementáciu; vlastník, ktorého kľúč nezodpovedá webhooks.key_type.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.