Docs học tập
Backend nền tảng

F10 · Lưu mật khẩu và quản lý Secret

Mật khẩu: lưu bằng hàm băm chậm có salt – bcrypt, scrypt, Argon2; không dùng MD5/SHA-1, không mã hóa hai chiều.

F10 · Junior

Ngân hàng không giữ bản sao chìa khóa nhà bạn; họ chỉ giữ "dấu vân tay" của chìa – đủ để đối chiếu nhưng không làm lại được chìa.

Cốt lõi

  • Mật khẩu: lưu bằng hàm băm chậm có salt – bcrypt, scrypt, Argon2; không dùng MD5/SHA-1, không mã hóa hai chiều.
  • Secret (mật khẩu DB, API key): không để trong code hay Git; dùng biến môi trường, secret manager (Vault, AWS Secrets Manager…).
  • Quyền tối thiểu cho tài khoản DB và service; xoay vòng (rotate) secret định kỳ.

Đánh đổi

Hash chậm là có chủ đích: đăng nhập chậm thêm vài chục ms không đáng kể, nhưng làm việc dò mật khẩu hàng loạt cực kỳ tốn kém.

Trong thực tế

Push nhầm file .env lên GitHub công khai – API key có thể bị bot quét và lạm dụng chỉ sau vài phút.

Bug thường gặp

Ghi log nguyên object user → lộ password hash và token trong hệ thống log.

Tự hỏi lại

Lỡ commit secret thì xóa commit đó có đủ không? (không – phải thu hồi và tạo secret mới)

On this page