+1

Giải quyết các cuộc tấn công DDOS bằng Redis Rate Limiting

Trong hướng dẫn này, tôi sẽ giúp các bạn khám phá cách phòng ngừa hiệu quả để chống lại các cuộc tấn công từ chối dịch vụ phân tán (DDoS) bằng cách sử dụng Redis Rate Limiting với Upstash Redis. Cuối cùng, bạn sẽ có một cơ chế mạnh mẽ để bảo vệ ứng dụng của mình khỏi lưu lượng truy cập quá mức và đảm bảo tính khả dụng của các ứng dụng. Cùng chú ý theo dõi nhé.

Còn nữa, nếu như bạn quan tâm đến Redis, thì hiện Redis đã có mặt trên Bizfly Cloud Database rồi đấy, các bạn có thể tìm hiểu nhé.

Cài đặt Upstash Rate Limiting SDK

Trước tiên, chúng ta hãy bắt đầu bằng cách cài đặt các gói cần thiết cho Upstash Rate Limiting.

npm install @upstash/ratelimit @upstash/redis

Cấu hình biến môi trường

Tạo cơ sở dữ liệu Redis bằng Upstash Console hoặc Upstash CLI . Chọn các vùng gần nhất với vùng triển khai của bạn để giảm thiểu độ trễ. Đặt UPSTASH_REDIS_REST_URL và UPSTASH_REDIS_REST_TOKEN để làm biến môi trường trong nền tảng triển khai của bạn.

# .env

UPSTASH_REDIS_REST_URL=<YOUR_URL>
UPSTASH_REDIS_REST_TOKEN=<YOUR_TOKEN>

Khởi tạo Rate Limiter SDK

Chúng ta sẽ bắt đầu khởi tạo SDK Rate Limiter để xác định các quy tắc giới hạn tốc độ cho các yêu cầu đến. Mã bên dưới thiết lập một bộ giới hạn tốc độ cho phép 10 yêu cầu trong 10 giây.

import { Redis } from "@upstash/redis"
import { Ratelimit } from "@upstash/ratelimit"

// Create a new ratelimiter, that allows 10 requests per 10 seconds
const ratelimit = new Ratelimit({
  redis: Redis.fromEnv(),
  limiter: Ratelimit.slidingWindow(10, "10 s")
})

Triển khai Rate Limiting 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 sẽ cần một mã định danh duy nhất. Trong đoạn mã này, mã định danh được đặt thành "API". Thông thường, bạn có thể sử dụng mã định danh làm Địa chỉ IP yêu cầu hoặc email của người dùng, ví dụ. Nếu vượt quá giới hạn tốc độ, một thông báo sẽ được trả về máy khách, ngăn chặn các yêu cầu quá mức. Nếu không, ứng dụng sẽ thực hiện hành động theo ý định.

const identifier = "api"

const { success } = await ratelimit.limit(identifier)

if (!success) {
  // Return with custom message for rate limiting
}

// Perform your usual operations

Hoàn thành

Bằng cách làm theo các bước này, bạn đã biết cách bảo vệ ứng dụng của mình khỏi các cuộc tấn công DDoS bằng Redis Rate Limiting với Upstash. Điều này có thể tăng cường đáng kể tính bảo mật và khả năng phục hồi của các dịch vụ web của bạn, đảm bảo chúng vẫn khả dụng ngay cả trong thời gian lưu lượng truy cập cao. Chúc các bạn thành công!!!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí