nzo/url-encryptor-bundle
Symfony bundle for encrypting and decrypting URL parameters, helping hide sensitive IDs and create tamper-resistant links. Integrates with Symfony routing so you can generate and resolve encrypted URLs with minimal configuration.
/invoice/1001) with encrypted, authenticated tokens. Directly reduces enumeration scraping and IDOR-style access — a security bug class that shows up in pen-test reports and bug bounties.Referer headers, CDN and access logs, and analytics tools — supports GDPR data-minimization and log-retention arguments.Adopt when:
Look elsewhere when:
encrypt()/decrypt(), Crypt::encryptString(), URL::signedRoute(), and temporarySignedRoute(). Zero new dependencies, first-party support, guaranteed upgrade path. Adding this bundle to a Laravel app is the wrong trade on every axis.Non-negotiables if adopted: pin the version, vendor or mirror the source, wrap it behind an internal TokenCodec interface, cap payload size (ciphertext inflates URLs), and keep decrypted values out of logs.
Executives: "A small, MIT-licensed library that turns IDs in URLs into unreadable, tamper-proof tokens. It closes an easy and embarrassing hole — anyone can walk /invoice/1001, /1002, /1003 and harvest customer data, and today those identifiers land in our analytics and CDN logs. This fixes it without changing the data model or standing up a new service. Cost is low, but it's a single-maintainer dependency, so we pin it and keep an exit to native framework crypto. Net: a cheap, contained win on a real privacy exposure — not a platform commitment."
Engineering: "It's a Symfony bundle wrapping authenticated symmetric encryption for URL parameters. On Laravel, don't take it — encrypt()/decrypt() plus signedRoute/temporarySignedRoute already does this and is first-party. Adopt it only in Symfony services where the alternative is hand-rolled crypto. Integration rules: put it behind an internal TokenCodec interface so we can swap to sodium or PASETO later; load keys from config/secret manager with a documented rotation path; reject oversized payloads; never log decrypted values; exclude encrypted URLs from analytics sampling. It's 98 stars with no dependents — treat it as audited vendor code, pin the version, and budget half a day to read the source before the first merge."
How can I help you explore Laravel packages today?