🌐 VI

🔑 Trình tạo API Key

Tạo API Key ngẫu nhiên an toàn. Dùng cho REST API, token xác thực và khóa bí mật.

Định dạng API Key
HƯỚNG DẪN

Tìm hiểu thêm

01

1. Tầm quan trọng của bảo mật API Key

API Key là thành phần bảo mật then chốt cho việc xác thực ứng dụng. Khóa yếu dễ bị tấn công brute force, và khi bị lộ sẽ dẫn đến truy cập API trái phép. API Key mạnh nên có ít nhất 32 ký tự ngẫu nhiên, sử dụng bộ sinh số giả ngẫu nhiên an toàn theo mật mã (CSPRNG). UUID v4, Base64 và Hex là các định dạng được dùng rộng rãi, mỗi khóa đều phải duy nhất và khó đoán. Hãy thu hồi và thay thế ngay các khóa bị lộ, và tuyệt đối không đưa chúng vào kho công khai như GitHub.

02

2. So sánh các phương pháp tạo khóa

Có nhiều phương pháp tạo API Key. UUID v4 sử dụng 122 bit ngẫu nhiên với xác suất trùng lặp cực thấp, nên được áp dụng rất rộng rãi. Base64 mã hóa dữ liệu nhị phân thành văn bản, cung cấp khoảng 192 bit entropy trong 32 ký tự. Hex biểu diễn bằng hệ thập lục phân, dễ đọc, và mang lại bảo mật 256 bit trong 64 ký tự. Alphanumeric chỉ dùng chữ cái và số nên an toàn cho URL, còn thêm tiền tố (sk_, api_) giúp dễ nhận biết loại khóa. Stripe, AWS và OpenAI dùng các định dạng khóa khác nhau để phân biệt từng loại khóa theo dịch vụ.

03

3. UUID so với chuỗi ngẫu nhiên

UUID v4 là một định danh chuẩn 128 bit, đảm bảo tính duy nhất trên toàn cầu. Định dạng 8-4-4-4-12 (ví dụ: 550e8400-e29b-41d4-a716-446655440000) có cấu trúc rõ ràng theo tiêu chuẩn RFC 4122. Chuỗi ngẫu nhiên tùy chỉnh linh hoạt hơn về độ dài và định dạng. UUID phù hợp cho khóa chính trong cơ sở dữ liệu, còn chuỗi ngẫu nhiên thì ngắn gọn và tiện hơn cho API Key. Mức độ bảo mật là tương đương, nhưng chuỗi ngẫu nhiên giúp triển khai logic kiểm tra dễ hơn với tiền tố và checksum.

04

4. Khuyến nghị lưu trữ khóa

Không bao giờ lưu API Key dưới dạng văn bản thuần. Hãy lưu trong biến môi trường (.env) và thêm vào .gitignore để loại khỏi hệ thống quản lý phiên bản. Trong môi trường production, hãy dùng các hệ thống quản lý secret chuyên dụng như AWS Secrets Manager, HashiCorp Vault hoặc Azure Key Vault. Khi lưu trong cơ sở dữ liệu, hãy chuyển thành hash (SHA-256) và áp dụng mã hóa (AES-256) khi cần. Tránh hardcode khóa trong mã nguồn; hãy dùng Docker secrets hoặc Kubernetes Secrets. Che khóa trong log để tránh lộ và theo dõi lịch sử sử dụng khóa.

05

5. Chính sách xoay vòng khóa

API Key nên được xoay vòng định kỳ. Thông lệ phổ biến là xoay mỗi 90 ngày; nếu nghi ngờ bị lộ, hãy thu hồi ngay. Để xoay vòng không gián đoạn, hãy kích hoạt đồng thời hai khóa, chuyển sang khóa mới rồi vô hiệu hóa khóa cũ. AWS IAM và Google Cloud API Keys có tính năng xoay vòng tự động. Hãy đặt ngày hết hạn cho từng khóa để tự động vô hiệu hóa khóa cũ và ghi lại lịch sử xoay vòng trong audit log. Sử dụng xác thực theo token như OAuth 2.0 hoặc JWT thay cho API Key sẽ an toàn hơn nhờ cơ chế hết hạn tự động.

06

6. Giới hạn tần suất và hạn chế sử dụng

Luôn áp dụng Rate Limiting cho API Key để ngăn lạm dụng. Đặt giới hạn như 100 yêu cầu mỗi phút trên mỗi IP hoặc 1,000 yêu cầu mỗi giờ trên mỗi khóa. Triển khai quota cho số lần gọi tối đa mỗi ngày, và trả về 429 Too Many Requests khi vượt quá. Cấu hình IP whitelist để chỉ cho phép sử dụng khóa từ các IP cụ thể, đồng thời phát hiện các mẫu bất thường (gửi hàng loạt trong thời gian ngắn) để tự động chặn. Các API gateway như Cloudflare, Kong và AWS API Gateway giúp đơn giản hóa việc triển khai Rate Limiting. Hãy đặt quyền riêng cho từng khóa (Scopes) để giới hạn quyền truy cập chỉ đọc, chỉ ghi, v.v.

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

Các khóa được tạo có được gửi đến máy chủ không?
Không. Tất cả khóa chỉ được tạo trong trình duyệt của bạn và không bao giờ được gửi đến máy chủ, nên an toàn để sử dụng.
Tôi nên chọn định dạng nào?
UUID v4 được dùng rộng rãi vì xác suất trùng lặp rất thấp. Chọn Alphanumeric nếu cần an toàn cho URL, hoặc Hex nếu ưu tiên khả năng đọc.