X-SignedRequest headers. It fits well in architectures requiring API integrity, CSRF protection, or secure inter-service communication (e.g., microservices, headless APIs, or third-party integrations).hash_hmac() with SHA-256 is needed.// app/Http/Middleware/SignedRequest.php
public function handle($request, Closure $next) {
$signature = $request->header('X-SignedRequest');
if (!$this->validateSignature($request, $signature)) {
abort(403, 'Invalid signature');
}
return $next($request);
}
App\Http\Kernel can append signatures to responses via a terminating middleware:
public function terminate($request, $response) {
$response->headers->set('X-SignedRequest', $this->generateSignature($response->getContent()));
}
$salt (hardcoded or config-based). Laravel’s .env can centralize this, but rotation logic must be designed (e.g., via config caching or database-backed keys).hash_hmac('sha256', ...) is critical.HttpFoundation). Laravel’s Symfony Bridge (symfony/http-foundation) can mitigate this, but adds complexity.X-* headers judiciously.throttle middleware.403 or log silently?failed_jobs table)?SignatureValidator, SignatureGenerator) to avoid Symfony dependencies.symfony/http-foundation (v5+) for Request/Response objects if needed, but prefer Laravel’s native equivalents where possible./api/webhooks).Request::getUri() → request()->getRequestUri())..env or database.hash_hmac() and type safety.SignedRequest should run before route handling.X-SignedRequest, ensure backward compatibility during migration.vendor/signed-request-laravel).config/signed_request_keys.php) with rollback support.X-SignedRequest requirements for clients.X-SignedRequest vs x-signedrequest).key_id).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Invalid signature | API rejection | Graceful degradation (log + retry). |
| Key rotation misconfiguration | Broken client requests | Blue-green deployment for keys. |
| MD5 collision attack | False positives | Migrate to SHA-256 immediately. |
| Middleware crash | All requests blocked | Circuit breaker pattern (e.g., Predis). |
| Header stripping (proxies/CDNs) | Silent failures | Use X-* headers, monitor X-SignedRequest presence. |
How can I help you explore Laravel packages today?