TỔNG HỢP M5
Nâng cao
👑 BOSS chặng
CA 08 / 11
BOSS M5 — bỏ phiếu online: 5 lớp phòng thủ, 1 lỗ hổng còn sót
Hệ thống bỏ phiếu trực tuyến, luồng đăng nhập kết hợp mọi lớp bảo mật đã học ở M5:
1. Mật khẩu: bcrypt.CompareHashAndPassword, chạy cả khi username không tồn tại (chống timing)
2. Rate-limit: khoá sau 5 lần sai / 15 phút, theo username OR ip
3. TOTP: verifyTOTPCode với Skew:1, secret mã hoá AES-GCM (key derive qua HKDF)
4. Cookie: HttpOnly, Secure, SameSite=Strict
5. CSP: script-src whitelist đúng domain cần
❌ Nhưng: sau khi TOTP đúng, code redirect thẳng sang /ballot mà KHÔNG cấp
session cookie MỚI — vẫn dùng nguyên session ID đã cấp từ TRƯỚC bước TOTP.
❯ BOSS M5 — luồng trên áp dụng đúng 5 lớp bảo mật đã học, nhưng có đúng 1 điểm yếu bị bỏ sót. Điểm yếu đó là gì?