ข้ามไปยังเนื้อหาหลัก
FreeOnlineTools Go
ไทย
คำอธิบาย

JWT คืออะไร? คำอธิบายที่สมบูรณ์ของโทเค็นเว็บ JSON

โดย FreeOnlineTools Team · อัปเดตเมื่อ 2026-09-02

ตอบด่วน

JWT คือสตริงสามส่วน Base64URL encode คั่นจุด: header.payload.signature header ระบุ algorithm, payload มี claims (user ID, roles, expiration), signature พิสูจน์ความถูกต้อง ใช้ JWT Decoder ฟรีของเราเพื่อตรวจเนื้อหา token

การแนะนำ

JWT (JSON Web Token) เป็นรูปแบบ token กระชับ URL-safe กำหนดโดย RFC 7519 สำหรับส่งข้อมูลระหว่างฝ่ายอย่างปลอดภัยเป็น JSON object JWT ใช้ authentication ใน web app: หลัง login server ออก JWT ที่ client ส่งใน request ถัดไป JWT stateless —server ไม่ต้อง lookup token ในฐานข้อมูล; token มี claims และ signature

ทีละขั้นตอน

  1. ทำความเข้าใจกับโครงสร้างสามส่วน

    JWT มีสามส่วน: ส่วนหัว (อัลกอริทึมและประเภท) เพย์โหลด (การอ้างสิทธิ์) และลายเซ็น (พิสูจน์ความสมบูรณ์) แต่ละส่วนมีการเข้ารหัส Base64URL และคั่นด้วยจุด: eyJhbGciOi...J9.eyJzdWIi...J9.signature ใครก็ตามที่มีโทเค็นสามารถอ่านสองส่วนแรกได้ เฉพาะลายเซ็นเท่านั้นที่ต้องใช้รหัสลับ

  2. เรียนรู้การกล่าวอ้างมาตรฐาน

    เพย์โหลดมีการอ้างสิทธิ์ — ข้อความเกี่ยวกับเรื่องนี้ การกล่าวอ้างมาตรฐาน: 'sub' (หัวเรื่อง/ID ผู้ใช้), 'iat' (ออก ณ เวลาประทับ), 'exp' (หมดอายุ), 'nbf' (ไม่ใช่ก่อนหน้า), 'iss' (ผู้ออก), 'aud' (ผู้ชม) การอ้างสิทธิ์แบบกำหนดเองอาจรวมถึงบทบาท สิทธิ์ หรือข้อมูลอื่น ๆ

  3. ทำความเข้าใจอัลกอริธึมการลงนาม

    JWT ใช้การลงนามแบบสมมาตร (HS256 — ความลับที่แชร์) หรือไม่สมมาตร (RS256, ES256 — คู่คีย์สาธารณะ/ส่วนตัว) ลายเซ็นป้องกันการปลอมแปลง: การเปลี่ยนส่วนใดส่วนหนึ่งของโทเค็นจะทำให้ลายเซ็นเป็นโมฆะ เฉพาะผู้ถือรหัสลับ/ส่วนตัวเท่านั้นที่สามารถสร้างโทเค็นที่ถูกต้องได้

  4. ใช้ JWT สำหรับการรับรองความถูกต้อง

    หลังจากเข้าสู่ระบบ เซิร์ฟเวอร์จะสร้าง JWT และส่งไปยังไคลเอนต์ ไคลเอนต์รวม JWT ไว้ในส่วนหัวการอนุญาต (โทเค็นผู้ถือ) สำหรับคำขอครั้งต่อไป เซิร์ฟเวอร์จะตรวจสอบลายเซ็นและตรวจสอบการหมดอายุ — ไม่จำเป็นต้องค้นหาฐานข้อมูล

ตัวอย่าง

JWT โครงสร้าง

ป้อนข้อมูล: JWT ทั่วไป

เอาท์พุต: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSIsImV4cCI6MTY5MzYxMjgwMH0.signature

ส่วนหัวที่ถอดรหัสแล้ว

ป้อนข้อมูล: ส่วนแรกถอดรหัสแล้ว

เอาท์พุต: {"alg": "HS256", "typ": "JWT"}

เพย์โหลดที่ถอดรหัสแล้ว

ป้อนข้อมูล: ส่วนที่สองถอดรหัส

เอาท์พุต: {"sub": "user1", "name": "Alice", "iat": 1693526400, "exp": 1693612800}

ปัญหาทั่วไป

  • การถอดรหัสและการตรวจสอบ —การถอดรหัส JWT (การอ่านเนื้อหา) ไม่ได้พิสูจน์ว่าเป็นของแท้ ตรวจสอบฝั่งเซิร์ฟเวอร์ลายเซ็นด้วยรหัสลับทุกครั้งก่อนที่จะเชื่อถือการอ้างสิทธิ์
  • การจัดเก็บ JWT ใน localStorage - ทำให้เข้าถึงได้ด้วย JavaScript ซึ่งเสี่ยงต่อการโจมตี XSS เก็บไว้ในคุกกี้ httpOnly เพื่อความปลอดภัยที่ดีขึ้น
  • โทเค็นที่มีอายุการใช้งานยาวนาน —หากโทเค็นถูกขโมย โทเค็นนั้นจะยังคงใช้ได้จนกว่าจะหมดอายุ ใช้โทเค็นการเข้าถึงที่มีอายุสั้น (15-60 นาที) พร้อมโทเค็นการรีเฟรชสำหรับเซสชันที่ยาวนาน
  • ข้อมูลที่ละเอียดอ่อนในเพย์โหลด — ใครก็ตามที่มีโทเค็นสามารถอ่านเพย์โหลดได้ (คือ Base64 ไม่ได้เข้ารหัส) อย่าใส่รหัสผ่าน บัตรเครดิต หรือความลับในเพย์โหลด

เคล็ดลับ

  • ตรวจสอบฝั่งเซิร์ฟเวอร์ลายเซ็น JWT เสมอก่อนที่จะเชื่อถือการอ้างสิทธิ์ใดๆ การถอดรหัสเพียงอย่างเดียวไม่ใช่การตรวจสอบสิทธิ์
  • ใช้โทเค็นการเข้าถึงที่มีอายุสั้น (15-60 นาที) พร้อมโทเค็นการรีเฟรชสำหรับเซสชันที่ยาวนาน เพื่อลดความเสียหายจากการขโมยโทเค็น
  • จัดเก็บ JWT ในคุกกี้ httpOnly, Secure, SameSite แทนที่จะเป็น localStorage เพื่อป้องกันการโจมตี XSS
  • ใช้ตัวถอดรหัส JWT ของเราเพื่อตรวจสอบเนื้อหาโทเค็นเพื่อการแก้ไขข้อบกพร่อง โทเค็นของคุณจะไม่มีวันออกจากเบราว์เซอร์ของคุณ

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

คำแนะนำที่เกี่ยวข้อง

อ้างอิง