#1. Rate Limiting (Throttling)
- Cơ chế: Đếm số request dựa trên IP hoặc User ID.
- Tối ưu: Dùng
Redisdriver để lưu counter. Không dùngDatabasehayFilevì I/O quá chậm. - Kinh nghiệm: Luôn cấu hình fallback (ví dụ: dùng
Redisnhưng nếu Redis chết, có thể cấu hìnhRateLimiter::forđể fallback về in-memory).
#2. Signed URLs (Bảo mật tạm thời)
- Nguyên lý: Đính kèm một chữ ký số (
signature) vào URL. Nếu hacker đổi 1 ký tự, chữ ký sẽ không khớp -> Request bị từ chối. - Ứng dụng: Link download file tạm thời, Link xác thực email, Link reset password.
#3. Phỏng vấn
Q: Sự khác biệt giữa Throttling dựa trên IP và User ID? A: IP dễ bị “giả mạo” hoặc chung IP (NAT). User ID an toàn hơn nhưng đòi hỏi User phải login. System tốt nhất là kết hợp cả hai.
Q: Làm sao để kiểm tra URL có hợp lệ không trước khi nó hết hạn?
A: Dùng URL::hasValidSignature($request) trong middleware. Laravel tự động băm lại URL và so sánh với hash được cung cấp.