Giải mã JWT

Đọc header, các claim và thời hạn của một JSON Web Token ngay trong trình duyệt. Chỉ giải mã: không có chữ ký nào được xác minh.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên, ghi log hay lưu trữ.

Công cụ này giải mã. Nó không xác minh. Không có thông tin nào bên dưới cho bạn biết token có thật hay không. Bất kỳ ai giữ một token đã ký đều đọc được các claim của nó, và bất kỳ ai cũng có thể viết một token trông giống token này. Hãy kiểm tra chữ ký trong ứng dụng của bạn, bằng khóa của bạn.

Ba phần ngăn cách bằng dấu chấm. Không có gì được gửi đi đâu cả.

Dán một token và xem header, các claim và thời hạn của nó. Việc giải mã diễn ra trong trình duyệt của bạn: token không được gửi đi, không được ghi log và không được lưu trữ.

Công cụ này không kiểm tra chữ ký, và không điều gì nó hiển thị có nghĩa là token đó là thật.

Cách hoạt động

Một JSON Web Token gồm ba phần mã hóa base64url, ngăn cách bằng dấu chấm: một header cho biết thuật toán nào đã ký nó, một payload chứa các claim và một chữ ký trên hai phần đầu. Hai phần đầu chỉ được mã hóa (encode) chứ không được mã hóa bảo mật (encrypt): bất kỳ ai có token đều đọc được chúng, và đó chính xác là điều diễn ra ở đây.

Các claim thời gian đã đăng ký được hiển thị thành ngày giờ dễ đọc: `exp` là lúc token hết hiệu lực, `nbf` là lúc nó bắt đầu có hiệu lực, `iat` là lúc nó được phát hành. Chúng được so với đồng hồ của bạn để cho biết token đang ở đâu trong khoảng hiệu lực của nó.

Chữ ký được hiển thị đúng như khi được viết ra và không được giải mã. Đó là chữ ký trên các byte chứ không phải trên văn bản, và hiển thị nó thành ký tự sẽ khiến người ta tưởng nó nói lên điều gì đó.

Ví dụ

Trường hợp Dữ liệu nhập Kết quả
Token tự khai là không có chữ ký eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIn0. alg none, typ JWT, sub 1234567890

Câu hỏi thường gặp

Vì sao công cụ không xác minh chữ ký?

Vì việc xác minh cần khóa ký, và một trang hỏi bạn khóa đó là đang yêu cầu bạn dán vào một website chính bí mật bảo vệ hệ thống của bạn. Ngoài ra còn một lý do tinh tế hơn: một công cụ giải mã trông như có xác minh sẽ khiến bạn tin vào một payload mà ai cũng có thể đã viết ra. Hãy xác minh trong ứng dụng của bạn, bằng khóa của bạn.

JWT có được mã hóa bảo mật không?

Không. Một token đã ký chỉ được mã hóa (encode), điều đó khác với mã hóa bảo mật (encrypt): bất kỳ ai có nó đều đọc được mọi claim, không cần khóa. Đừng bao giờ đặt vào token điều gì mà người mang nó không được phép thấy. Token mã hóa bảo mật có tồn tại — chúng có năm phần thay vì ba — và công cụ này không đọc được chúng.

Thuật toán “none” có nghĩa là gì?

Nghĩa là token không mang chữ ký nào cả. Đó là kiểu tấn công lâu đời nhất nhắm vào JWT: bỏ chữ ký, đặt `alg` thành `none` và hy vọng thư viện phía nhận chấp nhận nó. Trang sẽ cảnh báo khi gặp token như vậy; nếu bạn đang xem một token như thế mà không phải do bạn tạo, hãy coi nó là thù địch.

Token của tôi có rời khỏi trình duyệt không?

Không. Việc giải mã chạy cục bộ bằng JavaScript, và công cụ này không có liên kết chia sẻ, vì một liên kết sẽ đặt token vào URL, nơi nó sẽ nằm lại trong lịch sử trình duyệt và trong log của máy chủ.

Cần biết

  • Chỉ giải mã. Không có chữ ký nào được xác minh, và không điều gì trên trang này cho biết một token có phải là thật hay không.
  • Token được giải mã trong trình duyệt của bạn và không bao giờ được gửi đi, ghi log hay lưu trữ. Công cụ cần JavaScript; không có nó thì hoàn toàn không có việc giải mã.
  • Bất kỳ ai có một token đã ký đều đọc được nó. Hãy coi mọi claim của nó là công khai.

Nguồn

Tất cả công cụ Lập trình