Con Dao Hai Luoi Mang Ten JSON Web Token (JWT)
JSON Web Token (JWT, định nghĩa theo chuẩn RFC 7519) là tiêu chuẩn vàng trong xác thực API, đăng nhập một lần (SSO) và phân quyền ứng dụng hiện đại.
Tuy nhiên, có một quan niệm sai lầm rất phổ biến: Mã hóa hiển thị (Base64) không phải là bảo mật (Encryption).
Bất kỳ ai có được chuỗi JWT đều có thể giải mã và đọc được toàn bộ nội dung bên trong Payload. Nếu nhà phát triển mắc phải các lỗi cấu hình cơ bản, kẻ tấn công có thể dễ dàng làm giả quyền Admin để chiếm đoạt hệ thống.
Cấu Trúc 3 Phần Của Một Token JWT
Chuỗi JWT gồm 3 phần được phân tách bằng dấu chấm (.):
- Header (Đầu đề): Khai báo thuật toán mã hóa (ví dụ HS256, RS256) và định dạng token.
- Payload (Nội dung): Chứa các thông tin danh tính người dùng (user_id, email, vai trò role, thời gian hết hạn exp).
- Signature (Chữ ký điện tử): Chữ ký bảo vệ token không bị can thiệp, được tính toán từ Header + Payload + Secret Key.
4 Lỗ Hổng Bảo Mật JWT Nghiêm Trọng Cần Tránh
- Lỗ hổng thuật toán "none" (Bypass chữ ký): Nếu server không chặn thuật toán alg: "none", kẻ gian chỉ cần sửa vai trò thành admin, đặt thuật toán là none, xóa bỏ phần chữ ký là có thể qua mặt hệ thống.
- Khóa bí mật (Secret Key) quá yếu: Sử dụng mật khẩu đơn giản làm secret key sẽ bị kẻ tấn công dùng máy tính bẻ khóa bằng từ điển chỉ trong vài giây.
- Lưu trữ dữ liệu nhạy cảm trong Payload: Tuyệt đối không lưu mật khẩu người dùng, số thẻ tín dụng hay số căn cước công dân trong Payload của JWT.
- Copy token lên các trang debug không an toàn: Dán token thật của hệ thống lên các trang web trực tuyến không rõ nguồn gốc có thể làm lộ thông tin phiên đăng nhập cho bên thứ ba.
Kiểm Tra & Debug Token An Toàn Tuyệt Đối
Sử dụng công cụ JWT Debugger của SafeWebUtil: Toàn bộ quá trình giải mã, kiểm tra hạn sử dụng và xác minh chữ ký HMAC chạy trực tiếp trên trình duyệt của bạn qua Web Crypto API, hoàn toàn không gửi token lên bất kỳ máy chủ nào.