Thứ Năm, 18 tháng 9, 2025

Tại sao JSON Web Token (JWT) phổ biến?

Nguồn

 Why is JWT popular?

JWT là gì?

JSON Web Tokens, hay còn được biết đến với cái tên viết tắt JWT, là một phương pháp mạnh mẽ để truyền tải thông tin một cách an toàn giữa các bên, dưới dạng đối tượng JSON.

JWT đã trở thành nền tảng của bảo mật web vì nhiều lý do. Trước tiên, nói về JSON, đây là một định dạng trao đổi dữ liệu nhẹ, dễ đọc và ghi cho con người hiểu được, và đủ đơn giản để máy móc có thể parse và sinh ra.

JSON là cốt lõi của JWT vì nó đại diện cho phần payload, nơi bạn lưu trữ dữ liệu cần truyền tải.

Cấu trúc của JWT

JWT có cấu trúc gồm ba phần: header, payload và signature. Mỗi phần được mã hóa base64 và phân tách bằng dấu chấm.

Header thường bao gồm loại token (JWT) và thuật toán được sử dụng, như HMAC SHA256 hoặc RSA. Payload là nơi chứa các claim (yêu cầu). Claim là các tuyên bố về một thực thể (entity), thường là người dùng, kèm theo một số dữ liệu bổ sung. Có ba loại claim: đã đăng ký, công khai và riêng tư. Claim đã đăng ký là những yêu cầu được định nghĩa sẵn, như thông tin về người phát hành, thời gian hết hạn và đối tượng.

Mặc dù JWT payload có thể được mã hóa bằng JSON Web Encryption (JWE), hầu hết các cài đặt chỉ sử dụng chữ ký điện tử mà không mã hóa payload. Điều này có nghĩa là dữ liệu được encode nhưng không được mã hóa an toàn và có thể bị đọc nếu bị chặn. Vì vậy, không nên gửi thông tin nhạy cảm qua JWT trừ khi nó đã được mã hóa.

Thế còn việc ký (sign) vào các token thì sao. Ký giống như đóng dấu một phong bì bằng con dấu sáp để đảm bảo nó không bị giả mạo. Có hai loại thuật toán ký chính: Thuật toán đối xứng, như HMAC SHA256, sử dụng cùng một khóa bí mật để ký và xác minh.

Thuật toán bất đối xứng, như RSA, sử dụng cặp khóa công khai/bí mật, trong đó khóa bí mật ký token và khóa công khai xác minh nó.

Khi chọn thuật toán, bạn nên cân nhắc nhu cầu của mình. Khóa đối xứng nhanh và đơn giản, nhưng khóa bí mật phải được chia sẻ trước giữa các bên. Khóa bất đối xứng cho phép xác minh người tạo mà không cần chia sẻ khóa riêng tư, nhưng chậm hơn.

Sử dụng JWT

JWT đã ký sẽ cung cấp tính xác thực, ủy quyền và trao đổi thông tin an toàn. Sau khi đăng nhập, server tạo một JWT đã ký chứa thông tin người dùng và gửi lại cho client. Client sử dụng token này để truy cập các tài nguyên được bảo vệ bằng cách gửi nó trong HTTP header. JWT thường được sử dụng trong các tiêu chuẩn như OAuth2 và OpenID Connect để xác thực và ủy quyền.

Tuy nhiên, cần hiểu khi nào không nên sử dụng JWT. Vì payload mặc định không được mã hóa, nó không nên chứa thông tin nhạy cảm. Ngoài ra, JWT không lý tưởng để quản lý session của người dùng vì chúng không lưu trạng thái (stateless). Việc thu hồi quyền truy cập của JWT có thể khó khăn.

Một số lỗ hổng phổ biến cần lưu ý bao gồm: đánh cắp token, khi kẻ tấn công lấy trộm JWT hợp lệ để mạo danh người dùng; JWT cũng có thể bị tấn công nếu sử dụng các thuật toán hash yếu; các cuộc tấn công brute force tự động có thể cố gắng bẻ khóa chữ ký của token.

Để giảm thiểu rủi ro khi sử dụng JWT, một số phương pháp tốt nhất là: giữ cho payload nhỏ gọn, chỉ chứa các claim cần thiết; sử dụng thời gian hết hạn ngắn cho token khi có thể; lưu trữ token một cách an toàn và vô hiệu hóa bất kỳ token nào bị lộ; và sử dụng các thuật toán chữ ký mạnh mẽ.

Ưu điểm của JWT rất rõ ràng: JWT chứa đầy đủ thông tin, dễ di chuyển và không cần lưu trữ trên server. Tuy nhiên, chúng cũng dễ bị đánh cắp, và nếu bị đánh cắp thật, nó có thể cung cấp quyền truy cập tài nguyên của bạn cho người khác. Payload cũng có thể to ra nếu chứa quá nhiều thông tin, ảnh hưởng đến hiệu suất.

Tóm lại, JWT cung cấp một phương pháp dễ mở rộng để xử lý xác thực, ủy quyền và trao đổi thông tin nếu được triển khai cẩn thận.

=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master