Nội dung bài viết
Video học lập trình mỗi ngày
Trong quá trình phát triển backend, một trong những vấn đề bảo mật quan trọng mà chúng ta phải đối mặt là việc bảo vệ server khỏi các hành động SPAM vào những API nhạy cảm. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách bảo vệ API Forgot Password thông qua các cơ chế giới hạn tốc độ (Rate Limiting), bao gồm việc sử dụng thư viện Guava của Google và triển khai Redis để hiểu sâu hơn về logic đằng sau.
Mục đích của người phỏng vấn
API Forgot Password thường là một mục tiêu dễ bị tấn công bởi các cuộc tấn công kiểu Brute Force hoặc SPAM. Kẻ tấn công có thể gửi hàng loạt yêu cầu đến API này để cố gắng tìm ra các thông tin nhạy cảm hoặc gây quá tải hệ thống, dẫn đến từ chối dịch vụ (Denial of Service - DoS).
Xem cách bảo vệ cũng như thực hành: SPAM hệ thống thông qua PUSH REQUEST và cách bảo vệ
Vậy làm thế nào để chúng ta có thể bảo vệ server khỏi tình trạng này? Một trong những biện pháp phổ biến chính là giới hạn số lượng yêu cầu từ cùng một người dùng hoặc địa chỉ IP trong một khoảng thời gian nhất định. Đây là nơi mà Rate Limiting phát huy hiệu quả.
Cách bảo vệ hệ thống
Với các hệ thống phân tán, chúng ta cần một giải pháp có thể làm việc hiệu quả trên nhiều server. Redis là một lựa chọn phổ biến để triển khai Rate Limiting trên môi trường phân tán, nhờ khả năng lưu trữ key-value in-memory và hỗ trợ nhiều thao tác xử lý dữ liệu nhanh chóng.
Triển khai Rate Limiting với Redis Để hiểu rõ hơn về logic của Rate Limiting bằng Redis, hãy xem cách chúng ta có thể tự triển khai nó từ đầu. Ý tưởng là mỗi khi một người dùng gửi yêu cầu đến API, ta sẽ kiểm tra xem liệu người dùng đó đã vượt quá giới hạn cho phép chưa bằng cách lưu trữ và đếm các lần yêu cầu trong Redis.
Xem cách bảo vệ cũng như thực hành: SPAM hệ thống thông qua PUSH REQUEST và cách bảo vệ