ถอดรหัส JWT
ถอดรหัส header และ payload ของ JSON Web Token และดู exp, iat, nbf เป็นวันที่ การถอดรหัสไม่ใช่การตรวจสอบ ลายเซ็นไม่ได้ถูกตรวจ
ประมวลผลในเบราว์เซอร์ของคุณ ข้อความของคุณไม่ถูกอัปโหลด
เครื่องมือนี้ทำอะไรได้
วาง JSON Web Token แล้วอ่านสิ่งที่อยู่ข้างใน เครื่องมือจะแยกเป็น header, payload และ signature ถอดรหัสส่วน Base64url เป็น UTF-8 และจัดรูปแบบ JSON พร้อมไฮไลต์ไวยากรณ์ claim เวลาที่กำหนดไว้ ได้แก่ exp (หมดอายุ), nbf (ยังไม่มีผลก่อน) และ iat (ออกเมื่อ) จะแสดงเป็นวันที่ที่อ่านได้ พร้อมตัวบ่งชี้ชัดเจนว่าหมดอายุแล้ว ยังไม่มีผล หรือใช้ได้ในขณะนี้ เทียบกับนาฬิกาของอุปกรณ์คุณ
สำคัญ: การถอดรหัสไม่ใช่การตรวจสอบ header และ payload ของ JWT เป็นเพียงการเข้ารหัสข้อมูล ไม่ได้เข้ารหัสลับ และใครก็สร้างโทเค็นที่มีเนื้อหาใดก็ได้ เครื่องมือนี้ไม่เคยตรวจลายเซ็น ผู้ออกโทเค็น (issuer) ผู้รับ (audience) หรือ claim อื่นใด โทเค็นที่ถอดรหัสได้ที่นี่จึงอาจยังถูกปลอม ถูกแก้ไข หรือถูกเพิกถอน อย่าเชื่อถือโทเค็นเพียงเพราะถอดรหัสได้ การตรวจสอบต้องทำโดยเซิร์ฟเวอร์ของคุณด้วยคีย์ที่ถูกต้อง
โทเค็นคือข้อมูลรับรองตัวตน การถอดรหัสเกิดขึ้นทั้งหมดในเบราว์เซอร์ของคุณและโทเค็นไม่ถูกส่งไปที่ใด แต่ยังควรหลีกเลี่ยงการวางโทเค็นจริงของระบบ production บนอุปกรณ์ที่คุณไม่ได้ควบคุม เครื่องมือยังแจ้งเตือนเมื่อโทเค็นระบุ alg “none” หรือไม่มีลายเซ็น ซึ่งเป็นสัญญาณคลาสสิกของโทเค็นที่ไม่ปลอดภัยหรือถูกปลอม
วิธีใช้งาน
- 1วางโทเค็นทั้งชุด (สามส่วนคั่นด้วยจุด) คำนำหน้า “Bearer ” จะถูกลบให้
- 2อ่าน header และ payload ที่ถอดรหัสแล้ว รวมถึงวันที่ของ exp, nbf และ iat
- 3ตรวจคำเตือนต่าง ๆ เช่น alg “none” หรือไม่มีลายเซ็น
- 4คัดลอก JSON ที่ถอดรหัสแล้วหากต้องการ ตรวจสอบลายเซ็นในแบ็กเอนด์ของคุณเอง ไม่ใช่ที่นี่
รูปแบบที่รองรับ
โทเค็น JWS แบบ compact serialization (header.payload.signature) ที่มี header และ payload เป็น JSON โทเค็นที่เข้ารหัสลับ (JWE, ห้าส่วน) ถอดรหัสไม่ได้
ความเป็นส่วนตัว
เครื่องมือนี้ทำงานในเบราว์เซอร์ของคุณ ข้อมูลที่คุณป้อนจะถูกประมวลผลบนอุปกรณ์ของคุณและไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเรา
ข้อจำกัด
- ลายเซ็นไม่ได้ถูกตรวจสอบ เครื่องมือไม่สามารถบอกได้ว่าโทเค็นเป็นของแท้ ยังใช้ได้ที่ฝั่งเซิร์ฟเวอร์ ถูกเพิกถอน หรือออกมาเพื่อแอปพลิเคชันของคุณหรือไม่
- สถานะหมดอายุและไม่มีผลก่อนเวลาคำนวณจากนาฬิกาของอุปกรณ์ ซึ่งอาจคลาดเคลื่อน และเซิร์ฟเวอร์มักยอมให้นาฬิกาคลาดเคลื่อนได้บ้าง
- JWT ที่เข้ารหัสลับ (JWE) มีห้าส่วนและอ่าน payload ไม่ได้ จะถูกรายงานว่ารูปแบบไม่ถูกต้องที่นี่
- claim เวลาต้องเป็นจำนวนวินาทีนับตั้งแต่ปี 1970 ค่าอื่นจะแสดงว่าไม่ถูกต้อง
- claim อื่น (iss, aud, sub, scope…) จะแสดงแต่ไม่ได้ตีความหรือตรวจสอบ
คำถามที่พบบ่อย
การถอดรหัสได้หมายความว่าโทเค็นใช้ได้หรือไม่
ไม่ การถอดรหัสไม่ใช่การตรวจสอบ ใครก็เขียนโทเค็นที่ payload ระบุอะไรก็ได้ มีเพียงการตรวจลายเซ็นด้วยความลับหรือคีย์สาธารณะที่ถูกต้อง ร่วมกับการตรวจ claim เช่น ผู้ออก ผู้รับ และวันหมดอายุ เท่านั้นที่ทำให้โทเค็นน่าเชื่อถือ
โทเค็นของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่
ไม่ ถอดรหัสในเบราว์เซอร์ของคุณและไม่ถูกส่งออกไป แม้อย่างนั้น ควรถือว่าโทเค็นเหมือนรหัสผ่าน และใช้โทเค็นที่หมดอายุแล้วหรือโทเค็นทดสอบเมื่อทำได้
alg “none” หมายความว่าอะไร
หมายถึงโทเค็นที่ไม่มีลายเซ็น เซิร์ฟเวอร์ต้องปฏิเสธโทเค็นแบบนี้ เว้นแต่ตั้งใจรับ การยอมรับจะทำให้ผู้โจมตีปลอม payload ใดก็ได้ เครื่องมือจะแจ้งเตือนเมื่อพบ
ทำไมจึงบอกว่าโทเค็นหมดอายุ ทั้งที่เซิร์ฟเวอร์ยังยอมรับ
นาฬิกาของอุปกรณ์คุณอาจต่างจากเซิร์ฟเวอร์ หรือเซิร์ฟเวอร์ยอมให้คลาดเคลื่อนได้บ้าง สถานะที่นี่เป็นเพียงความสะดวกจากเวลาในเครื่องของคุณ ไม่ใช่ข้อสรุปที่เชื่อถือได้
เครื่องมือที่เกี่ยวข้อง
ถอดรหัส Base64
ถอดรหัส Base64 และ Base64 แบบปลอดภัยสำหรับ URL เป็นข้อความ รองรับ UTF-8 แสดงข้อผิดพลาดชัดเจนสำหรับอักขระ ความยาว และ padding ที่ไม่ถูกต้อง
จัดรูปแบบ JSON
จัดรูปแบบ ทำให้อ่านง่าย และเรียงลำดับ JSON พร้อมไฮไลต์ไวยากรณ์ ระบุข้อผิดพลาดตามบรรทัดและคอลัมน์ ทำงานในเบราว์เซอร์ของคุณ
ตรวจสอบ JSON
ตรวจสอบว่า JSON ถูกต้องหรือไม่ และดูบรรทัดกับคอลัมน์ของข้อผิดพลาดแรกที่พบ พร้อมเครื่องหมายชี้ใต้อักขระที่มีปัญหา
ลดขนาด JSON (Minify)
ลดขนาด JSON ด้วยการตัดช่องว่างเพื่อให้ payload เล็กลง พร้อมตัวเลือกเรียงคีย์ ตรวจสอบและประมวลผลในเบราว์เซอร์ของคุณ