Hướng dẫn bảo vệ ứng dụng khỏi tấn công DDoS bằng Redis Rate Limiting
Trong bài viết này, chúng ta sẽ cùng nhau khám phá một phương pháp hiệu quả để phòng ngừa các cuộc tấn công từ chối dịch vụ phân tán (DDoS) bằng cách áp dụng Redis Rate Limiting thông qua Upstash Redis. Mục tiêu của chúng ta là tạo ra một cơ chế bảo vệ mạnh mẽ cho ứng dụng của bạn, nhằm đảm bảo tính khả dụng ngay cả khi đối mặt với lưu lượng truy cập quá mức. Hãy cùng theo dõi nhé!
Ngoài ra, nếu bạn đang tìm kiếm một dịch vụ Redis chất lượng, hãy tham khảo Bizfly Cloud Database, nơi Redis đã có mặt và có thể phục vụ cho nhu cầu của bạn.
Cài đặt Upstash Rate Limiting SDK
Trước tiên, chúng ta cần cài đặt các gói cần thiết để sử dụng Upstash Rate Limiting. Hãy chạy lệnh sau trong terminal của bạn:
npm install @upstash/ratelimit @upstash/redis
Cấu hình biến môi trường
Chúng ta cần tạo một cơ sở dữ liệu Redis bằng Upstash Console hoặc Upstash CLI. Vui lòng chọn vùng gần nhất với khu vực triển khai của bạn để giảm thiểu độ trễ. Sau khi tạo, hãy đặt các biến môi trường UPSTASH_REDIS_REST_URL
và UPSTASH_REDIS_REST_TOKEN
trên nền tảng triển khai của bạn.
bash
# .env
UPSTASH_REDIS_REST_URL=<YOUR_URL>
UPSTASH_REDIS_REST_TOKEN=<YOUR_TOKEN>
Khởi tạo SDK Rate Limiter
Bây giờ, chúng ta sẽ bắt đầu khởi tạo SDK Rate Limiter. Đoạn mã dưới đây sẽ thiết lập một bộ giới hạn tốc độ cho phép 10 yêu cầu trong vòng 10 giây:
javascript
import { Redis } from "@upstash/redis"
import { Ratelimit } from "@upstash/ratelimit"
// Tạo một mới Rate Limiter cho phép 10 yêu cầu trong 10 giây
const ratelimit = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(10, "10 s")
})
Triển khai giới hạn tốc độ với mã định danh duy nhất
Để áp dụng giới hạn tốc độ cho một điểm cuối hoặc hành động cụ thể, bạn cần sử dụng một mã định danh duy nhất. Trong đoạn mã này, mã định danh được đặt là "API". Thông thường, mã định danh này có thể là Địa chỉ IP của yêu cầu hoặc email của người dùng. Nếu lưu lượng vượt quá giới hạn, hệ thống sẽ trả về thông báo cho máy khách, ngăn chặn các yêu cầu vượt mức. Nếu không vượt quá giới hạn, ứng dụng sẽ thực hiện hành động mong muốn.
javascript
const identifier = "api"
const { success } = await ratelimit.limit(identifier)
if (!success) {
// Trả về thông báo tùy chỉnh cho việc giới hạn tốc độ
}
// Thực hiện các hoạt động bình thường của bạn
Kết luận
Bằng cách thực hiện các bước trên, bạn đã có cho mình một giải pháp bảo vệ hiệu quả ứng dụng của mình khỏi các cuộc tấn công DDoS thông qua Redis Rate Limiting với Upstash. Giải pháp này không chỉ giúp bảo vệ mà còn nâng cao tính bảo mật và khả năng phục hồi cho dịch vụ web của bạn, đảm bảo chúng hoạt động ổn định ngay cả trong thời gian lưu lượng truy cập cao.
Nếu bạn còn cần thêm thông tin hoặc đang tìm kiếm dịch vụ ngăn chặn tấn công DDoS, đừng ngần ngại khám phá dịch vụ của Bizfly Cloud. Chúc bạn thành công trong việc bảo vệ ứng dụng của mình!
source: viblo