Kiểm tra mật khẩu API

Chấm điểm mật khẩu 0–4 kèm thời gian bẻ khoá ước tính và gợi ý, kiểm tra mật khẩu có trong các vụ rò rỉ dữ liệu mà không cần gửi mật khẩu đi (k-anonymity).

POSThttps://apibox.io.vn/v1/password-check
Bảo mật & Mã hoá▶ Dùng thử online

API kiểm tra mật khẩu ước tính mật khẩu khó đoán đến đâu. Ngoài độ dài và loại ký tự, API tìm những gì kẻ tấn công thử trước tiên: các mật khẩu phổ biến nhất (kể cả kiểu Việt Nam như matkhau, anhyeuem), mật khẩu phổ biến thêm vài chữ số, chuỗi bàn phím và bảng chữ cái (qwerty, 1234, abcd), ký tự lặp, thay chữ bằng ký hiệu (P@ssw0rd) và ngày tháng, năm sinh. Kết quả gồm điểm từ 0 (rất yếu) đến 4 (rất mạnh), entropy ước tính, thời gian bẻ khoá theo bốn kịch bản và cảnh báo, gợi ý để hiển thị cạnh form đăng ký.

API còn đối chiếu với cơ sở dữ liệu Have I Been Pwned gồm hơn 900 triệu mật khẩu đã bị lộ. Chỉ 5 ký tự đầu của mã băm SHA-1 rời khỏi máy chủ của chúng tôi (tìm kiếm theo dải k-anonymity, có padding), nên cả chúng tôi lẫn HIBP đều không biết mật khẩu; mật khẩu đã bị lộ luôn bị chấm 0 điểm. Đặt breach=false để bỏ qua bước này.

Mật khẩu chỉ được xử lý trong bộ nhớ: không lưu, không ghi log, không dùng làm khoá cache. Hãy gửi trong body POST thay vì trên URL.

Tham số

TênVị tríKiểuBắt buộcMặc định
passwordbodystringcóMật khẩu (tối đa 256 ký tự). Dùng POST.
breachbodybooleankhôngtruefalse: bỏ qua kiểm tra rò rỉ.

Ví dụ

curl -X POST "https://apibox.io.vn/v1/password-check" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"password":"anhyeuem2024"}'

Kết quả trả về

{
  "length": 12,
  "charsets": {
    "lower": true,
    "upper": false,
    "digits": true,
    "symbols": false,
    "unicode": false
  },
  "entropy_bits": 10,
  "score": 0,
  "strength": "very weak",
  "crack_time": {
    "online_throttled": "5 hours",
    "online": "51 seconds",
    "offline_slow_hash": "less than a second",
    "offline_fast_hash": "less than a second"
  },
  "warnings": [
    "This password appeared … times in known data breaches: never use it",
    "A common password with a few characters added is still easy to guess",
    "Dates and years (birthdays) are among the first things attackers try"
  ],
  "suggestions": [
    "Mixing character types helps, but length helps more",
    "Use a different password for every site, ideally from a password manager"
  ],
  "breach": {
    "checked": true,
    "found": true,
    "count": 1234
  },
  "note": "The password is not stored or logged. …"
}

Ứng dụng

  • Thanh đo độ mạnh mật khẩu ở form đăng ký, đổi mật khẩu
  • Chặn mật khẩu đã bị lộ theo khuyến nghị NIST SP 800-63B
  • Rà soát bảo mật tài khoản quản trị
  • Hướng dẫn người dùng đặt mật khẩu mạnh

Hỏi đáp

Mật khẩu có bị gửi tới Have I Been Pwned không?

Không. Chỉ 5 ký tự hex đầu của mã băm SHA-1 được gửi đi; phần còn lại được so khớp ngay trên máy chủ với danh sách trả về.

Vì sao một cụm từ dài vẫn bị 0 điểm?

Vì nó đã xuất hiện trong các vụ rò rỉ (ví dụ “correct horse battery staple”). Kẻ tấn công luôn thử mật khẩu đã lộ trước, dù dài đến đâu.

Có nên bắt buộc ký tự đặc biệt không?

Độ dài quan trọng hơn. Khuyến nghị hiện nay là tối thiểu 8 (tốt hơn 12+) ký tự, không ép quy tắc thành phần và có kiểm tra rò rỉ — điều API này làm cho bạn.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →