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ì?