Rate Limiting là gì? Cách chống Spam Form và DDOS API bằng Upstash Redis trong Next.js

2026-07-24 8 phút đọcBởi Uwmee Software

Nếu bạn mở một Form liên hệ hoặc một API Route xử lý AI trên website mà không có cơ chế giới hạn lượt gọi, tin tặc có thể dùng Bot tự động **bắn hàng ngàn Request/giây**, làm sập máy chủ hoặc khiến hóa đơn API của bạn tăng vọt hàng ngàn đô la! Rate Limiting (Giới hạn tần suất truy cập) là bức tường lửa bảo vệ hệ thống của bạn.

1. Rate Limiting hoạt động như thế nào?

Rate Limiting theo dõi địa chỉ IP của người dùng và giới hạn số lượng Yêu cầu (Request) mà IP đó được phép gửi trong một khoảng thời gian (Ví dụ: Tối đa 5 lượt gửi Form / 1 phút / 1 địa chỉ IP). Nếu vượt quá giới hạn, server lập tức trả về mã lỗi HTTP 429 Too Many Requests.

2. Tích hợp Rate Limiting với Upstash Redis trong Next.js Middleware

Sử dụng thư viện @upstash/ratelimit@upstash/redis cực kỳ nhanh gọn:

import { NextResponse } from 'next/server';
import { Ratelimit } from '@upstash/ratelimit';
import { Redis } from '@upstash/redis';

const redis = new Redis({
  url: process.env.UPSTASH_REDIS_REST_URL,
  token: process.env.UPSTASH_REDIS_REST_TOKEN,
});

// Giới hạn 10 requests trong 10 giây theo IP
const ratelimit = new Ratelimit({
  redis,
  limiter: Ratelimit.slidingWindow(10, '10 s'),
});

export async function middleware(request) {
  const ip = request.ip ?? '127.0.0.1';
  const { success } = await ratelimit.limit(ip);

  if (!success) {
    return new Response('Bạn thao tác quá nhanh! Vui lòng thử lại sau.', { status: 429 });
  }

  return NextResponse.next();
}

3. 3 Kỹ thuật Rate Limiting cho từng loại tài nguyên

  • Form Đăng ký / Liên hệ: Giới hạn 3-5 request / phút / IP để chặn Spam Email Lead.
  • API Đăng nhập (Login/Auth): Giới hạn 5 lần thử sai / 15 phút để chống tấn công dò mật khẩu (Brute-Force Attack).
  • API Route công khai: Giới hạn 60 request / phút / IP để bảo vệ ngân sách Server.

Kết luận

Tích hợp Rate Limiting là giải pháp sinh tồn bảo vệ hạ tầng Web khỏi các đợt tấn công từ chối dịch vụ. Uwmee Software tích hợp sẵn bộ lọc Rate Limiting chống Spam cho mọi website Next.js bàn giao. Đọc thêm bài viết 8 tiêu chí đánh giá website chất lượng.

Cần vượt Closed Testing nhanh chóng?

Đội 12+ tester thật của Uwmee tương tác hằng ngày đủ 14 ngày — trọn gói chỉ 300.000đ, chạy lại miễn phí nếu không đạt.

Câu hỏi thường gặp