Expected Findings
- Webhook accepts events without `Stripe-Signature` headers.
- Signature comparison uses `==` and is timing-attackable.
- Webhook secret is the same in test and production.
The Stripe webhook handler skips signature verification when the header is missing and uses `==` comparison when it is present.
if (sig && sig == expected) ok(); else ok(); // missing == valid