Mục tiêu là rút ngắn thời gian từ lúc tài khoản bị chiếm tới lúc bị phát hiện, và người phát hiện nhanh nhất thường chính là chủ tài khoản.
Ghi log những sự kiện gì: đăng nhập thành công/thất bại, đăng xuất, đổi mật khẩu, bật/tắt MFA, dùng backup code, đổi email hoặc số điện thoại, tạo/thu hồi API key, thay đổi vai trò, và mọi lần bị từ chối quyền. Mỗi bản ghi kèm: thời điểm, user id, IP, user agent, device id, kết quả, mã lý do.
Nguyên tắc nội dung log: không bao giờ ghi mật khẩu, token, session id, mã OTP, hay secret MFA — kể cả khi đăng nhập thất bại (mật khẩu gõ sai rất hay là mật khẩu đúng của tài khoản khác). Log phải chống sửa (append-only, chuyển ra kho tách biệt) vì đây là bằng chứng khi điều tra.
Tín hiệu bất thường đáng cảnh báo:
- Đăng nhập từ quốc gia/thiết bị mới, hoặc "du hành bất khả thi" (hai vị trí quá xa trong thời gian quá ngắn).
- Nhiều lần sai rồi thành công — dấu hiệu dò ra mật khẩu.
- Tăng vọt tỉ lệ thất bại toàn hệ thống hoặc một IP chạm nhiều tài khoản khác nhau.
- Chuỗi thao tác điển hình của chiếm tài khoản: đăng nhập lạ → đổi email → tắt MFA → tạo API key.
Thông báo cho người dùng — phần hay bị bỏ:
- Gửi mail (và push nếu có) cho mọi thay đổi bảo mật: đổi mật khẩu, đổi email, tắt MFA, thiết bị mới. Gửi tới địa chỉ cũ khi email bị đổi, kèm liên kết "không phải tôi".
- Cho user tự xem danh sách phiên đang hoạt động kèm thiết bị/IP/thời điểm và thu hồi từng phiên.
- Với hành vi rủi ro cao, thay vì chỉ báo thì yêu cầu xác minh lại (step-up authentication) trước khi cho thực hiện.
Cân bằng cần chú ý: cảnh báo quá dày làm người dùng bỏ qua tất cả, nên chỉ gửi cho sự kiện thực sự đổi trạng thái bảo mật.