Vì sao "email này không tồn tại" là một vấn đề
Dò tài khoản là lỗ hổng mà mọi người biết một nửa: nửa được biết là thông báo lỗi, và ba kênh còn lại thì không.
Trước hết, vì sao nó là vấn đề — vì đây là chỗ hay bị gạt đi với câu "email không phải secret":
- Nó biến một danh sách email thành một danh sách người dùng. Một danh sách rò rỉ từ nơi khác lọc xuống thành "những người có tài khoản ở đây" — và đó là danh sách mục tiêu cho password spraying với các mật khẩu đã lộ.
- Với một số dịch vụ, việc có tài khoản đã là thông tin nhạy cảm. Một ứng dụng sức khoẻ tâm thần, một dịch vụ pháp lý, một trang tìm việc: xác nhận
alice@corp.localcó tài khoản là tiết lộ về Alice. - Nó là bước một của mọi cuộc tấn công vào xác thực. Không ai brute-force một email họ không biết có tồn tại.
Bốn kênh, và ba kênh dưới vẫn mở sau khi bạn thống nhất thông báo lỗi:
| Kênh | Biểu hiện | Vì sao khó đóng |
|---|---|---|
| 1. Thông báo lỗi | "Email không tồn tại" vs "Mật khẩu sai" | Dễ nhất — một chuỗi |
| 2. Thời gian phản hồi | Email không tồn tại trả về nhanh hơn vì không có hash để verify | Cần cố ý làm chậm |
| 3. Luồng đăng ký | "Email đã được sử dụng" khi đăng ký | Không thể im lặng — người dùng cần biết |
| 4. Quên mật khẩu | "Đã gửi email" vs "Không tìm thấy tài khoản" | Cùng dạng với 1, nhưng ở endpoint khác |
Kênh 2 là kênh đáng nói nhất vì nó lộ ra do bản vá của kênh 1. Hash mật khẩu bằng Argon2id tốn khoảng 50–100 ms cố ý. Nếu email không tồn tại, code thoát sớm và không hash gì — nên response về sau 5 ms. Chênh lệch 20 lần đó đo được qua mạng một cách đáng tin, và nó nói chính xác điều mà thông báo lỗi vừa được sửa để không nói.
Kênh 3 là kênh không đóng hoàn toàn được, và đó là một đánh đổi thật cần quyết định thay vì bỏ qua.
Bình luận
Bình luận cần tài khoản đã hoàn thành ít nhất một bài học. Điều kiện đó là thứ giữ cho luồng thảo luận này còn đáng đọc: mỗi ý kiến gắn với một người có thể bị hỏi lại, và reputation tích luỹ theo thời gian.
Bạn vẫn đọc được toàn bộ bình luận dưới đây mà không cần tài khoản. Đăng nhập xong bạn sẽ quay lại đúng chỗ này, không phải đầu trang.
Đang tải bình luận…