security
Junior
How to secure APIs?
Short Answer
Secure APIs with HTTPS, authentication (Sanctum/Passport), rate limiting, input validation, CORS configuration, and proper error handling.
Detailed Answer
API security layers:
1. HTTPS: Always use SSL/TLS in production
2. Authentication: Sanctum tokens or Passport OAuth
3. Rate limiting: Throttle requests per user/IP
4. Input validation: Validate all input with Form Requests
5. CORS: Configure allowed origins properly
6. CSRF protection: Not for API routes (token-based auth)
7. Error handling: Don\'t expose stack traces in production
8. Authorization: Check user permissions (Policies/Gates)
9. Input sanitization: Prevent SQL injection and XSS
10. API versioning: Support multiple API versions
Additional measures:
- API keys for third-party access
- Request signing for webhooks
- IP whitelisting for admin endpoints
- Audit logging for sensitive operations
Code Example
Example
<?php
// Rate limiting
Route::middleware(['auth:sanctum', 'throttle:60,1'])->group(function () {
Route::apiResource('posts', PostController::class);
});
// Form Request validation
public function rules(): array
{
return [
'title' => ['required', 'string', 'max:255'],
'body' => ['required', 'string', 'max:5000'],
];
}
// Authorization
$this->authorize('update', $post);
// CORS configuration
// config/cors.php
'allowed_origins' => ['https://frontend.com'],
// Safe error handling
report() => Log::error($e);
render() => response()->json(['error' => 'Server error'], 500);
Interview Tip
Discuss defense in depth: "No single security measure is enough. Use multiple layers: HTTPS + auth + validation + rate limiting + authorization."