dsentker/url-signature
Laravel/PHP package to create and verify signed URLs. Add a signature to query strings to protect routes and parameters from tampering, with simple helpers for generating signatures and validating incoming requests, including optional expiry support.
?a=1&b=2 vs. ?b=2&a=1) could break signature validation, but now requires mandatory updates to existing implementations.QueryString helper update now enforces a stricter, standardized parameter ordering, which may require adjustments to custom middleware or URL generation logic.QueryString helper’s update invalidates all existing signatures if parameter ordering differs. This is a hard breaking change with no deprecation cycle, requiring:
VerifyUrlSignature middleware will reject signatures generated with old ordering.QueryString helper invalidates all existing signatures if parameter order differs. Risk mitigation:
?param=val¶m=val2).?, #, and encoded characters (e.g., %20, +).+ vs. %20 in query strings).QueryString helper independently?QueryString helper introduce measurable overhead in middleware?QueryString helper.VerifyUrlSignature works with updated URLs.QueryString helper:
// Old (custom logic)
$sortedParams = sortQueryParams($request->query());
$signature = hash_hmac('sha256', $sortedParams, config('url_signature.secret'));
// New (using package)
use Dsentker\UrlSignature\QueryString;
$queryString = app(QueryString::class)->getSignedQueryString($request->query());
QueryString helper.composer update dsentker/url-signature.QueryString helper:
// Middleware update
public function handle($request, Closure $next) {
$queryString = app(QueryString::class)->getSignedQueryString($request->query());
if (!hash_equals($queryString['signature'], $request->query('signature'))) {
abort(403);
}
return $next($request);
}
QueryString helper for long-term stability.How can I help you explore Laravel packages today?