Lộ API key AI: vì sao ví cạn trong một đêm và 5 cách giới hạn thiệt hại
Key AI thường lộ qua mã nguồn đẩy lên GitHub, file cấu hình chia sẻ, ảnh chụp màn hình và mã chạy trên trình duyệt; ai có key là dùng được số dư của bạn. Trên MonkeyTech API, cách giới hạn thiệt hại là mỗi ứng dụng một key riêng (tối đa 10 key hoạt động), đặt hạn mức chi tiêu tháng và phạm vi model cho từng key trong Dashboard, Keys, và thu hồi đúng key bị lộ. Key chạm hạn mức trả lỗi 402 api_key_monthly_limit, nạp thêm ví không tự nới hạn mức đó.

Một kịch bản quen thuộc: lập trình viên làm thử chatbot cuối tuần, dán API key thẳng vào file config.js, đẩy lên GitHub để gửi đồng nghiệp xem. Sáng thứ Hai, số dư ví AI về 0, trang sử dụng có vài nghìn lượt gọi model đắt nhất lúc 3 giờ sáng. Không ai trong công ty gọi những lượt đó.
API key là tiền mặt. Ai cầm key là tiêu được số dư của bạn, và nhà cung cấp không phân biệt được người gọi là bạn hay kẻ lấy được key. Bài này nói về những chỗ key hay lộ và cách giới hạn thiệt hại trên MonkeyTech API, để nếu có lộ thì mất ít, không mất hết.
Key thường lộ ở đâu
| Chỗ lộ | Vì sao nguy hiểm |
|---|---|
| Mã nguồn đẩy lên GitHub, GitLab công khai | Có công cụ tự động quét kho mã công khai để tìm chuỗi giống API key |
| Mã chạy trên trình duyệt hoặc ứng dụng di động | Ai mở công cụ dành cho nhà phát triển là đọc được key |
| File cấu hình gửi qua Zalo, email | File đi qua nhiều máy, nhiều người |
| Ảnh chụp màn hình khi hỏi lỗi trong nhóm | Key nằm trong ảnh, ảnh ở lại nhóm mãi mãi |
| Workflow n8n, Make xuất ra file để chia sẻ | Một số cách lưu đưa key vào file xuất |
| Log ứng dụng | Ghi cả header Authorization khi gỡ lỗi |
Hai chỗ nguy hiểm nhất là kho mã công khai và mã chạy phía trình duyệt. Với mã phía trình duyệt, đừng bao giờ gọi API AI trực tiếp; luôn đi qua máy chủ của bạn, key chỉ nằm trên máy chủ.
Dấu hiệu key đang bị dùng trộm
- Số dư giảm nhanh vào giờ không ai làm việc.
- Trang Sử dụng có model bạn không dùng, ví dụ ứng dụng của bạn chỉ gọi model rẻ mà lại xuất hiện model đắt.
- Lượt gọi tăng đột biến trong khi lượng khách không đổi.
Tập thói quen mở trang Sử dụng mỗi tuần, nhất là tuần đầu sau khi đưa ứng dụng mới lên.
Năm cách giới hạn thiệt hại trên MonkeyTech API
1. Mỗi ứng dụng, mỗi máy một key
Mỗi tài khoản có tối đa 10 key hoạt động cùng lúc. Tách key cho từng nơi dùng: chatbot website một key, workflow n8n một key, máy lập trình viên A một key. Lợi ích có hai:
- Lộ key nào, thu hồi đúng key đó, các ứng dụng khác vẫn chạy.
- Trang Sử dụng tách được chi phí theo từng key, nên bạn biết ngay ứng dụng nào tốn tiền.
2. Đặt hạn mức chi tiêu tháng cho từng key
Trong Dashboard, mục Keys, đặt hạn mức tháng cho mỗi key, tính bằng VNĐ. Khi key chạm hạn mức, mọi lượt gọi bằng key đó trả lỗi:
{
"type": "error",
"error": { "type": "api_key_monthly_limit" }
}
Lỗi có thể kèm limit_vnd và spent_vnd để bạn biết đã tiêu bao nhiêu. Điểm quan trọng: nạp thêm tiền vào ví không tự nới hạn mức của key. Kẻ lấy được key chỉ tiêu được tối đa bằng hạn mức bạn đặt, dù ví còn nhiều tiền.
Cách đặt hạn mức hợp lý: lấy chi phí tháng trước của ứng dụng đó, nhân 1,5 đến 2 lần. Đủ rộng để ứng dụng không dừng khi khách tăng, đủ hẹp để không mất cả ví.
3. Giới hạn model cho từng key
Cũng trong mục Keys, đặt phạm vi model mà key được phép gọi. Chatbot trả lời khách chỉ cần một model tầm trung thì chỉ cho key đó gọi đúng model ấy. Key bị lộ mà người lấy cố gọi model đắt nhất sẽ nhận lỗi 403 model_not_allowed.
4. Không để key trong mã nguồn
Đặt key trong biến môi trường hoặc file cấu hình nằm ngoài kho mã:
# .env, nhớ thêm .env vào .gitignore
MONKEYTECH_API_KEY=sk-mtk-...
Đừng đưa key vào URL, ảnh chụp, log. Khi cần gửi lỗi cho bộ phận hỗ trợ, gửi mã lỗi và x-monkeytech-request-id trong phản hồi, không gửi key.
5. Thu hồi ngay khi nghi lộ
Nghi ngờ là đủ để thu hồi, không cần chắc chắn. Vào Dashboard, mục Keys, thu hồi key nghi lộ, tạo key mới, thay vào ứng dụng. Key đã thu hồi gọi vào sẽ nhận lỗi 401 authentication_error.
Nếu ứng dụng vẫn báo 401 sau khi đã thay key, thường là ứng dụng còn giữ key cũ trong bộ nhớ đệm: xoá key cũ trong ứng dụng rồi khởi động lại.
Một quy trình nhỏ cho đội 2-5 người
- Chủ tài khoản giữ quyền tạo key, không chia sẻ mật khẩu đăng nhập Dashboard.
- Mỗi ứng dụng mới được cấp một key có hạn mức tháng và phạm vi model.
- Ghi lại key nào dùng ở đâu (tên key là đủ, không ghi giá trị key).
- Mỗi thứ Hai xem trang Sử dụng 5 phút.
- Người nghỉ việc: thu hồi các key họ từng dùng trên máy cá nhân.
Câu hỏi thường gặp
Lượt gọi bằng key hợp lệ được tính phí như mọi lượt gọi khác, vì hệ thống không phân biệt được người gọi. Đó là lý do hạn mức tháng và phạm vi model quan trọng: chúng giới hạn thiệt hại trước khi bạn kịp phát hiện. Nếu thấy giao dịch bất thường, liên hệ hỗ trợ kèm request ID và thời điểm để được đối soát.
Với key tạo mới, chủ tài khoản xem và sao chép lại được trong bảng điều khiển; key được lưu ở dạng mã hoá. Key tạo trước khi có tính năng này không khôi phục được, khi đó tạo key mới.
Không giấu được hoàn toàn. Đặt một máy chủ nhỏ ở giữa: ứng dụng gọi máy chủ của bạn, máy chủ giữ key và gọi MonkeyTech API. Cách gọi API từ Python, Node.js ở phía máy chủ, xem bài gọi Claude, GPT bằng Python, Node.js.
Bài viết hữu ích với bạn? Thả tim để chúng tôi viết thêm chủ đề này.
Cần tự động hóa quy trình cho doanh nghiệp?
Monkey Tech build AI Agent, bot Zalo/Telegram và luồng n8n chạy thật cho bạn.


