Tôi là tác giả của một thư viện nút xử lý xác thực ở một số độ sâu, tốc độ nhanh , vì vậy tôi sẽ đồng ý với một số thông tin ở đây.
Trước hết, JWT thường KHÔNG được mã hóa. Mặc dù có một cách để mã hóa JWT (xem: JWEs ), nhưng điều này không phổ biến trong thực tế vì nhiều lý do.
Tiếp theo, bất kỳ hình thức xác thực nào (có sử dụng JWT hay không), đều phải chịu các cuộc tấn công MitM (người trung gian). Những cuộc tấn công này xảy ra khi kẻ tấn công có thể XEM lưu lượng MẠNG CỦA BẠN khi bạn thực hiện các yêu cầu qua internet. Đây là những gì ISP của bạn có thể thấy, NSA, v.v.
Đây là những gì SSL giúp ngăn chặn: bằng cách mã hóa lưu lượng NETWORK từ máy tính của bạn -> một số máy chủ khi xác thực, bên thứ ba đang theo dõi lưu lượng truy cập mạng của bạn KHÔNG thể thấy mã thông báo, mật khẩu hoặc bất cứ thứ gì tương tự trừ khi chúng có thể bằng cách nào đó để có một bản sao khóa SSL riêng của máy chủ (không chắc). Đây là lý do SSL là BẮT BUỘC cho tất cả các hình thức xác thực.
Tuy nhiên, giả sử ai đó có thể khai thác SSL của bạn và có thể xem mã thông báo của bạn: câu trả lời cho câu hỏi của bạn là CÓ , kẻ tấn công sẽ có thể sử dụng mã thông báo đó để mạo danh bạn và yêu cầu máy chủ của bạn.
Bây giờ, đây là nơi các giao thức đến.
JWT chỉ là một tiêu chuẩn cho mã thông báo xác thực. Chúng có thể được sử dụng cho khá nhiều thứ. Lý do JWT thú vị là vì bạn có thể nhúng thông tin bổ sung vào đó và bạn có thể xác thực rằng không ai đã nhầm lẫn với nó (ký).
TUY NHIÊN, bản thân JWT không liên quan gì đến 'bảo mật'. Đối với tất cả ý định và mục đích, JWT ít nhiều giống với khóa API: chỉ là các chuỗi ngẫu nhiên mà bạn sử dụng để xác thực đối với một số máy chủ ở đâu đó.
Điều làm cho câu hỏi của bạn thú vị hơn là giao thức đang được sử dụng (rất có thể là OAuth2).
Cách thức hoạt động của OAuth2 là nó được thiết kế để cung cấp cho khách hàng mã thông báo TẠM THỜI (như JWTs!) Để xác thực cho CHỈ CÓ THỜI GIAN NGẮN HẠN!
Ý tưởng là nếu mã thông báo của bạn bị đánh cắp, kẻ tấn công chỉ có thể sử dụng nó trong một khoảng thời gian ngắn.
Với OAuth2, bạn phải tự xác thực lại với máy chủ thường xuyên bằng cách cung cấp tên người dùng / mật khẩu HOẶC thông tin API và sau đó nhận lại mã thông báo.
Bởi vì quá trình này xảy ra mọi lúc, mã thông báo của bạn sẽ thường xuyên thay đổi, khiến kẻ tấn công khó liên tục mạo danh bạn hơn mà không gặp phải rắc rối lớn.
Hy vọng điều này sẽ giúp ^^