مُفكّك JWT

الصق بيانات JWT (المكوّنة من ثلاثة أجزاء مُرمّزة بتنسيق base64url ومفصولة بنقاط)، وسيعرض المُفكّك الرأس والحمولة والتوقيع بعد فك ترميزها وتنسيقها بشكل واضح، بالإضافة إلى الخوارزمية المكتشفة، وتاريخ انتهاء صلاحية الرمز وفق توقيتك المحلي، وما إذا كانت القيم nbf (ليس قبل)، وiat (وقت الإصدار)، وexp (انتهاء الصلاحية) متسقة أم لا. ويمكن التحقق من التوقيع اختياريًا إذا توفّر لديك المفتاح السري أو المفتاح العام.

كيفية فك تشفير بيانات JWT

  1. 1

    الصق الرمز

    ثلاث سلاسل نصية بتنسيق base64url مفصولة برمز `.` (الرأس.الحمولة.التوقيع).

  2. 2

    اقرأ رأس البيانات بعد فك التشفير

    الخوارزمية، والنوع، ومعرّف المفتاح (`kid`): تُخبرك الخوارزمية بنوع المفتاح المطلوب للتحقق.

  3. 3

    اقرأ الحمولة

    المطالبات القياسية (`iss`، `sub`، `aud`، `exp`، `iat`، `nbf`، `jti`) بالإضافة إلى أي مطالبات مخصصة يصدرها تطبيقك.

  4. 4

    التحقق (اختياري)

    أدخل مفتاح HMAC السري (للمعايير HS256/384/512) أو المفتاح العام (للمعايير RS256، ES256، وغيرها) للتحقق من صحة التوقيع.

تشريح الـ JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNjAwMDAwMDAwfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

يُرمَّز كل جزء بتنسيق base64url (وليس base64 القياسي). الرأس عبارة عن بيانات بصيغة JSON مثل {"alg":"HS256","typ":"JWT"}، والحمولة بصيغة JSON مثل {"sub":"1234567890","name":"Alice","iat":1600000000}، أما التوقيع فهو توقيع HMAC أو RSA لقيمة header.payload.

المطالبات القياسية (RFC 7519)

المطالبة الاسم ملاحظات
iss الجهة المُصدِرة الجهة التي أنشأت الرمز
sub الموضوع عمّن يتحدث الرمز
aud الجمهور لمن يُوجَّه الرمز
exp وقت انتهاء الصلاحية طابع زمني بنظام يونكس؛ يُرفَض بعد هذا الوقت
nbf ليس قبل طابع زمني بنظام يونكس؛ يُرفَض قبل هذا الوقت
iat وقت الإصدار الطابع الزمني بنظام يونكس لإنشاء الرمز
jti معرّف JWT معرّف فريد لقوائم الإبطال

الخوارزميات المدعومة

قيمة alg نوع المفتاح
HS256/HS384/HS512 سر HMAC مشترك
RS256/RS384/RS512 مفتاح RSA العام
ES256/ES384 مفتاح ECDSA العام
PS256/PS384 مفتاح RSA-PSS العام
EdDSA / Ed25519 منحنى إدواردز
none لا تثق بهذا أبدًا، رموز غير موقّعة

مأزق alg: none

كانت مكتبات JWT المبكرة تسمح برموز "alg": "none" وتقبلها بسذاجة على أنها صحيحة. احرص دائمًا على ما يلي:

  • أدرِج الخوارزميات التي يقبلها تطبيقك في قائمة بيضاء.
  • ارفض alg: none دون أي شرط.
  • ارفض alg: HS256 عندما يتوقع رمز التحقق لديك قيمة RS256 (هجوم «الخلط بين الخوارزميات»).

ما الذي ليس عليه الـ JWT

  • غير مشفّر. الرأس والحمولة مُرمَّزان بتنسيق base64 الذي يسهل فك ترميزه تمامًا. لا تضع أي معلومات سرية في الـ JWT دون تغليفه بتنسيق JWE.
  • غير قابل للإبطال افتراضيًا. بمجرد إصداره، يظل الـ JWT ساري المفعول حتى تاريخ exp. وللإبطال تحتاج إلى قائمة سوداء أو مدة صلاحية قصيرة مع رموز تجديد.
  • ليس بديلًا عن ملف تعريف ارتباط الجلسة في كل حالات الاستخدام. فالرموز المُعتِمة المخزّنة على الخادم غالبًا ما تكون أبسط وأكثر أمانًا.

الأخطاء الشائعة

  • الوثوق بالرأس. تأتي القيمتان kid وalg من الرمز نفسه؛ ويمكن لخادم مُخترَق أن يحدّدها كيفما شاء، لذا تحقّق منها دائمًا مقابل قائمة ثابتة.
  • تجاهل انحراف nbf وiat. قد يؤدي انجراف الساعة إلى أن يصبح iat > now؛ لذا اسمح بهامش بسيط (30 إلى 60 ثانية).
  • تسجيل رموز JWT كاملة. غالبًا ما تحتوي الحمولة على معرّفات المستخدمين والبريد الإلكتروني والصلاحيات، وهي معلومات شخصية حساسة لا ينبغي أن تنتهي في المخرج القياسي (stdout).
  • استخدام HS256 بسر ضعيف. يمكن كسر سر مكوّن من 16 حرفًا بالقوة الغاشمة خلال دقائق. استخدم 256 بتًا على الأقل من العشوائية الحقيقية.

الأسئلة الشائعة

لا، عملية فك التشفير تتم مباشرةً في متصفحك. يبقى الرمز المحليًا؛ وهو أمر مهم لأن بيانات JWT غالبًا ما تتضمن بيانات الجلسة ومعرّفات المستخدمين والصلاحيات.

نعم. عند لصق سر HMAC المشترك أو المفتاح العام المشفر باستخدام تنسيق PEM، يتم التحقق من صحته مباشرةً في متصفحك؛ ولا يغادر هذا المفتاح جهازك قط.

يعني ذلك أن الرمز غير موقّع. لا تقبل أبدًا مثل هذه الرموز في البيئات التشغيلية الحقيقية، إذ يمكن تزويرها بسهولة. وقد كانت عدة ثغرات أمنية معروفة على نطاق واسع مرتبطة بشكل خاص بمكتبات كانت تستقبل الرمز alg: none بشكل افتراضي.

يُثبت توقيع JWT صحة البيانات، وليس سرية المعلومات. يتم ترميز رأس البيانات ومحتواها باستخدام تنسيق Base64 URL، وهو تنسيق قابل للعكس. ولضمان السرية، يُستحسن استخدام تقنية التشفير JSON Web Encryption (JWE) حول بيانات JWT، أو تجنّب إدراج بيانات حساسة في المحتوى الرئيسي.

أدوات ذات صلة

مرجع جدول ASCII

جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.

مرجع أحرف HTML

قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.

مرجع اختصارات لوحة المفاتيح

ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.

مولد EditorConfig

أنشئ ملف .editorconfig بقواعد نمط المسافة البادئة وحجمها ونهاية السطر ومجموعة الأحرف والمسافات البيضاء، لتنسيق موحّد عبر بيئات التطوير المتكاملة (IDEs) والمحررات.

مدقق البريد الإلكتروني

تحقق من عنوان بريد إلكتروني: فحص صياغة RFC 5322، واستعلام حي عن سجل MX، بالإضافة إلى تفاصيل الجزء المحلي والنطاق والطول. لا يتم إرسال أي بريد.

ورقة مرجعية سريعة لـ Markdown

مرجع Markdown عملي مع معاينات فعلية وأمثلة جاهزة للنسخ للعناوين والقوائم والجداول والكود والروابط والصور وصياغة GFM.

الأداة متاحة بلغات أخرى