Cheatsheet: Chống lạm dụng API: rate limit, bot và chi phí AI
Tip: Nguyên tắc xuyên suốt: đặt giới hạn trước khi mở cửa. Mọi endpoint tốn tiền hoặc tốn tài nguyên phải có trần rõ ràng trước khi có traffic thật.
Bảng tra nhanh: dùng gì cho việc gì
| Vấn đề | Công cụ | Phạm vi | Chặn ở đâu |
|---|---|---|---|
| Một IP spam dồn dập | Rate limit theo IP | IP | Trước khi vào handler |
| Một user gọi quá nhiều | Rate limit theo user | user id / API key | Trước khi vào handler |
| Tổng dùng trong tháng | Quota theo user | user id | Trước khi gọi dịch vụ tốn tiền |
| Bot tự động đăng ký / spam form | Captcha + chống bot | session / IP | Ở endpoint công khai |
| Request rác tốn CPU / token | Validate input sớm | request body | Ngay đầu handler |
| Hóa đơn AI tăng vọt | Budget + cảnh báo | toàn hệ thống / user | Trước và sau mỗi lần gọi |
Thứ tự lớp bảo vệ (chạy từ ngoài vào trong):
flowchart TD
Req["📥 Request vào"] --> IP["🌐 Rate limit theo IP"]
IP --> Auth["🔑 Xác thực user"]
Auth --> UR["👤 Rate limit theo user"]
UR --> Quota["📊 Kiểm tra quota"]
Quota --> Val["✅ Validate input"]
Val --> Bot["🤖 Captcha / chống bot nếu cần"]
Bot --> Budget["💰 Kiểm tra budget còn lại"]
Budget --> Call["☁️ Gọi API AI bên thứ ba"]
Call --> Log["🧾 Ghi log chi phí"]
Module 1: Kiểm soát lưu lượng và chống lạm dụng API
1.1 Rate limiting theo IP và theo user
| Thuật toán | Cách hoạt động | Khi dùng |
|---|---|---|
| Fixed window | Đếm trong khung cố định (vd 60s) | Đơn giản, chấp nhận burst ở biên |
| Sliding window | Cửa sổ trượt theo thời gian | Mượt hơn, hay dùng cho API công khai |
| Token bucket | Nạp token đều, tiêu khi gọi | Cho phép burst có kiểm soát |
| Leaky bucket | Xả đều theo tốc độ cố định | Làm phẳng lưu lượng |
This cheatsheet is premium content. Sign in and purchase the course to view the full content. Sign in