Giải mã JWT
Giải mã JSON Web Token và đọc phần header, payload cùng các claim ở dạng dễ hiểu, kèm kiểm tra tức thì xem token đã hết hạn chưa. Việc giải mã diễn ra cục bộ
Dán một JSON Web Token và đọc ba phần của nó ở dạng dễ hiểu: phần header với thuật toán ký, phần payload với các claim, và mốc thời gian dễ đọc cho thời điểm phát hành, thời điểm bắt đầu có hiệu lực và thời điểm hết hạn. Công cụ cho bạn biết ngay token đã hết hạn chưa và sẽ hết hạn khi nào.
Đây là bước gỡ lỗi thường ngày khi một API trả về 401 và bạn cần biết vấn đề nằm ở chữ ký, ở audience hay đơn giản là token đã hết hạn. Mọi thứ được giải mã trong trình duyệt của bạn, nên token production không bao giờ bị gửi đi đâu.
Cách giải mã JSON Web Token
Dán token vào
Đọc phần header, payload và thời điểm hết hạn
Sao chép JSON của payload nếu bạn cần
Câu hỏi thường gặp
Công cụ có xác minh chữ ký không?
Không - và điều đó rất quan trọng. Việc giải mã chỉ giải Base64url các phần, nên nội dung đọc được nhưng chưa được chứng minh là xác thực. Đừng bao giờ coi một token đã giải mã là đáng tin cho đến khi máy chủ của bạn xác minh chữ ký.
Làm sao biết token đã hết hạn?
Claim exp là một timestamp Unix tính bằng giây và công cụ so nó với thời gian hiện tại, hiển thị ngày giờ và cho biết token còn hiệu lực hay không.
exp, iat và nbf khác nhau thế nào?
iat là thời điểm token được phát hành, nbf là thời điểm sớm nhất token được phép dùng, còn exp là thời điểm token hết hiệu lực. Token chỉ được chấp nhận trong khoảng giữa nbf và exp.
Dán một token thật vào đây có an toàn không?
Việc giải mã diễn ra hoàn toàn trong trình duyệt của bạn, nên token không bị truyền đi. Dù vậy hãy luôn coi token như một thông tin xác thực: đừng dán nó vào một site bạn không tin, và hãy đổi token nếu nó có thể đã bị lộ.
Vì sao token của tôi báo lỗi?
Một JWT có đúng ba phần ngăn cách bởi dấu chấm. Thiếu một phần, có dấu xuống dòng ở giữa, hoặc thực ra chỉ là một session ID không đọc được - tất cả đều bị báo là không phải JWT.
Token của tôi có bị tải lên không?
Không, việc giải mã diễn ra cục bộ.
Tổng quan nhanh
| Đầu vào | văn bản |
|---|---|
| Nhiều tệp cùng lúc | Không |
| Chạy ở đâu | Ngay trong trình duyệt - tệp không bao giờ bị tải lên |
| Dùng được ngoại tuyến | Có — sau khi trang đã tải xong |
| Giá | Miễn phí, không đăng ký, không hình mờ |
Xử lý thông tin bí mật một cách an toàn
Các công cụ dành cho lập trình viên xử lý thông tin đăng nhập thường xuyên hơn người ta tưởng, và rủi ro không nằm ở thuật toán mà ở chỗ dữ liệu đi tới. Băm là một chiều và không phải mã hoá - MD5 và SHA-1 đã bị phá với mọi mục đích liên quan đến bảo mật, và ngay cả SHA-256 cũng là công cụ sai để lưu mật khẩu, nơi bcrypt, scrypt hay Argon2 tồn tại chính là để chạy chậm. Base64 là một cách mã hoá, không phải bảo vệ: ai cũng giải mã được, nên đừng bao giờ coi nó là cách che giấu. Một JWT có thể bị bất kỳ ai giữ nó đọc được, vì thế phần payload không bao giờ được chứa bí mật, và việc giải mã một token không xác minh chữ ký của nó - muốn xác minh phải có khoá. Mọi thứ trên site này chạy cục bộ trong trình duyệt của bạn, và đó là lý do nó có thể xử lý token cùng mật khẩu một cách an toàn.
Những chỗ việc chuyển đổi âm thầm hỏng
Phần lớn lỗi chuyển đổi không nằm ở cú pháp mà ở ý nghĩa. Một cột mã bưu chính trong CSV mất các số 0 đứng đầu ngay khi bảng tính đoán rằng đó là số; một ID dài vượt quá độ chính xác của số dấu phẩy động; ngày tháng đổi nghĩa tuỳ theo nó được viết theo kiểu ngày trước hay tháng trước. Các khoá JSON không có thứ tự nhưng mảng thì có, và một công cụ sắp xếp khoá thì không đổi gì, còn công cụ sắp xếp mảng thì đổi dữ liệu. Unicode là một cái bẫy khác: văn bản có thể đến dưới dạng UTF-8, UTF-16 hoặc kèm dấu thứ tự byte, và một bộ giải mã đoán sai sẽ biến các ký tự có dấu thành chữ hỏng. Trước khi tin vào bất kỳ phép chuyển đổi nào, hãy kiểm tra nhanh hàng đầu và hàng cuối, mọi trường có số 0 đứng đầu, và mọi trường chứa dấu ngoặc kép, dấu phẩy hay ký tự xuống dòng.