robertboes/laravel-cloudflare-proxies
Laravel package for handling Cloudflare proxy IPs so your app sees the real visitor IP. It helps configure trusted proxies and resolve client addresses correctly behind Cloudflare, keeping rate limiting, logging, and security checks accurate.
100.64.0.0/10) and documentation ranges were not being rejected on Symfony versions that Laravel 12 permits, because the upstream PRIVATE_SUBNETS constant omits them. This is the difference between an SSRF/egress guard that looks correct in review and one that actually holds in production.refresh is enabled. That makes it a low-blast-radius adoption: teams can ship the package now, leave refresh off, and enable it per-service when egress controls are in scope.Adopt when:
Evaluate carefully when:
refresh; the fix and much of the value are inert without it. Adopt for the roadmap, not for immediate behavior change.0.1.x package — expect pre-1.0 churn and pin versions.Action for current adopters: upgrade to v0.1.1 if refresh is on. This is a patch-level, backwards-compatible correctness fix, not a breaking change — no migration work, no config changes, no API changes.
To executives: This is a small, targeted security-correctness fix in an opt-in guard that blocks server-side requests to non-public IP space. The prior release relied on a Symfony constant that omits carrier-grade NAT and documentation ranges on the Symfony versions our Laravel 12 target allows — meaning a class of requests we believed were blocked could pass through. v0.1.1 closes that gap. Risk of adopting is low: it is a patch release, it changes no configuration, and it only affects behavior where the refresh feature is explicitly enabled. Recommended decision: upgrade, and treat the package as the maintained owner of IP-range classification rather than building and maintaining that list internally.
To engineering: Patch release, no breaking changes. The runtime refresh path now explicitly rejects 100.64.0.0/10 (CGNAT) and the documentation ranges, because PRIVATE_SUBNETS is incomplete on the Symfony versions Laravel 12 permits. If refresh is enabled anywhere, bump to v0.1.1 and confirm the range set matches your own denylist expectations; if it is disabled, the upgrade is a no-op but still worth taking to stay current. Note the package is 0.1.x — pin the version and re-check range coverage whenever the Laravel/Symfony support matrix moves.
How can I help you explore Laravel packages today?