ข้ามไปยังเนื้อหา
EVOA Toolbox

ถอดรหัส 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. 1วางโทเค็นทั้งชุด (สามส่วนคั่นด้วยจุด) คำนำหน้า “Bearer ” จะถูกลบให้
  2. 2อ่าน header และ payload ที่ถอดรหัสแล้ว รวมถึงวันที่ของ exp, nbf และ iat
  3. 3ตรวจคำเตือนต่าง ๆ เช่น alg “none” หรือไม่มีลายเซ็น
  4. 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 ใดก็ได้ เครื่องมือจะแจ้งเตือนเมื่อพบ

ทำไมจึงบอกว่าโทเค็นหมดอายุ ทั้งที่เซิร์ฟเวอร์ยังยอมรับ

นาฬิกาของอุปกรณ์คุณอาจต่างจากเซิร์ฟเวอร์ หรือเซิร์ฟเวอร์ยอมให้คลาดเคลื่อนได้บ้าง สถานะที่นี่เป็นเพียงความสะดวกจากเวลาในเครื่องของคุณ ไม่ใช่ข้อสรุปที่เชื่อถือได้

เครื่องมือที่เกี่ยวข้อง