Menu
العربية

فاك ترميز JWT

حلّل وتحقّق من JSON Web Tokens جزءًا جزءًا.

Last updated

الخوارزمية
مشفرألصق رمز JSON Web Token
مفكوك
تظهر الترويسة والحمولة هنا — الرموز لا تغادر متصفحك.

ما المقصود بفاكّ ترميز JWT؟

أداة فكّ ترميز JWT تقسم رمز JSON Web Token إلى أجزائه الثلاثة — header وpayload وتوقيع — ثم تفكّ ترميز Base64URL لأول جزأين كي تقرأهما كـ JSON. المطورون يستخدمونها باستمرار أثناء تتبع مشاكل تسجيل الدخول والصلاحيات والـ claims وانتهاء صلاحية الرموز.

فكّ ترميز JWT *لا يعني* الوثوق به. الـ header والـ payload قابلان للقراءة بحكم تصميمهما — هما مرمَّزان فقط بـ Base64URL وليسا مشفَّرَين. التحقق هو ما يُثبت أن الرمز موقَّع من الجهة المتوقعة وأنه لم يُعبَث به.

شكل JWT هو header.payload.signature، وكل جزء مرمَّز بـ Base64URL ومفصول بنقطة. الـ header يحدد خوارزمية التوقيع، والـ payload يحمل الـ claims (هوية المستخدم، وقت انتهاء الرمز، الصلاحيات الممنوحة)، والتوقيع يسمح للخادم بإثبات أن الرمز لم يُعدَّل.

ما الذي ستتعلّمه أثناء فكّ ترميز JWT

  • رمز JWT يتكوّن من ثلاثة أجزاء مرمَّزة بـ Base64URL ومفصولة بنقاط: header.payload.signature.
  • الـ claims الشائعة مثل sub وrole وiat وnbf وexp تصف الهوية والصلاحيات ووقت الإصدار ووقت انتهاء الصلاحية.
  • أي شخص يستطيع تعديل الـ payload المفكوك — التوقيع وحده هو ما يمكّن الخادم من اكتشاف العبث.

خطوات فكّ ترميز JWT

  1. ألصق الرمز كاملًا

    ألصق الـ JWT في صندوق الإدخال. يجب أن يبدو بهذا الشكل xxxx.yyyy.zzzz — ثلاثة أجزاء مرمَّزة بـ Base64URL يفصل بينها نقاط.

  2. اقرأ الـ header

    الـ header يخبرك بخوارزمية التوقيع (alg) ونوع الرمز. انتبه جيدًا لـ "alg": "none" — معناه أن الرمز غير موقَّع ولا يمكن الوثوق به.

  3. اقرأ claims الـ payload

    الـ payload هو الـ JSON الذي يحتوي على كل الـ claims. ابحث عن sub (معرّف المستخدم) وexp (وقت الانتهاء) وiat (وقت الإصدار) وأي claims مخصّصة يضيفها تطبيقك مثل role أو tenant.

  4. تحقّق من انتهاء الصلاحية

    حوّل قيمة exp (طابع زمني Unix) إلى تاريخ — إذا كانت في الماضي فالرمز منتهي الصلاحية، وأي API محترم سيرفضه.

  5. تحقّق من التوقيع (اختياري)

    إذا كان لديك السر أو المفتاح العام، ألصقه في أداة التحقق للتأكد من صحة التوقيع. محتويات الرمز جديرة بالثقة فقط حين ينجح التحقق من التوقيع.

claims القياسية في JWT

هذه هي الـ claims المسجَّلة المعرَّفة في مواصفة JWT (RFC 7519). يمكن لأي تطبيق إضافة claims مخصّصة بجانبها.

الـ Claimالاسمالمعنى
issIssuerالجهة التي أنشأت الرمز ووقّعته
subSubjectالموضوع الذي يخصّه الرمز — غالبًا معرّف المستخدم
audAudienceالجهة المقصودة بهذا الرمز
expExpirationطابع زمني Unix يصبح بعده الرمز غير صالح
nbfNot Beforeلا يجوز قبول الرمز قبل هذا الوقت
iatIssued Atوقت إنشاء الرمز
jtiJWT IDمعرّف فريد — مفيد عند الإلغاء
algAlgorithm (header)خوارزمية التوقيع: HS256 أو RS256 أو ES256

أمثلة JWT للتجربة

افحص رمز JWT نموذجي

الرمز

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsInJvbGUiOiJzdHVkZW50IiwiZXhwIjoxNzEwMDAwMDAwfQ.Q3hH8yzqI2OsHJ1Lyj8jJfJPa5ZpIVlh1FhJpJbqMcs

الـ Header
{  "alg": "HS256",  "typ": "JWT"}
الـ Payload
{  "sub": "user_123",  "role": "student",  "exp": 1710000000}

الـ header يشير إلى HS256 (خوارزمية تعتمد على سر مشترك). الـ payload يحدّد المستخدم ودوره ووقت انتهاء صلاحية الرمز. الجزء الثالث هو التوقيع. (هذا رمز توضيحي للعرض فقط — التوقيع لن ينجح التحقق منه مع أي سر حقيقي.)

افحص ما إذا كان الرمز منتهي الصلاحية

claim من الـ payload
{  "exp": 1710000000}

قيمة exp هي طابع زمني Unix بالثواني. حوّلها إلى تاريخ — إذا كانت في الماضي فالرمز منتهي الصلاحية، وأي backend سليم سيرفضه.

التقط خطورة خوارزمية "none"

الـ Header
{  "alg": "none",  "typ": "JWT"}

إذا قَبِل الخادم "alg": "none"، يستطيع المهاجم تزوير أي payload دون توقيع. ارفض هذا الـ header دائمًا في بيئة الإنتاج.

أخطاء شائعة عند استخدام JWT

  • وضع كلمات المرور أو الأسرار أو البيانات الشخصية الحساسة داخل الـ payload. JWT قابل للقراءة وليس مشفّرًا.
  • فكّ ترميز الرمز واعتباره صحيحًا دون التحقق من التوقيع.
  • الخلط بين كون Base64URL سهل القراءة وبين التشفير الحقيقي — payload الـ JWT مكشوف عمدًا.

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

ما هو JWT؟
JWT اختصار لـ JSON Web Token، وهو صيغة رمز مدمجة وموقَّعة وآمنة للاستخدام في الروابط، تُستعمل لنقل claims بين طرفين — غالبًا بين الخادم والمتصفح لتمثيل مستخدم مسجَّل دخوله.
كيف أفكّ ترميز JWT؟
ألصق الرمز في أداة فكّ ترميز JWT، أو قسّمه عند النقاط ثم فكّ ترميز Base64URL لكل من الجزأين الأولين. سيظهر الـ header والـ payload كـ JSON، أما الجزء الثالث فهو التوقيع.
كيف أعرف أن الـ JWT منتهي الصلاحية؟
انظر إلى claim الـ exp داخل الـ payload. هي طابع زمني Unix بالثواني. إذا تجاوز الوقت الحالي قيمة exp فالرمز منتهي الصلاحية.
هل يستطيع أي شخص فكّ ترميز JWT؟
نعم. الـ header والـ payload مرمَّزان بـ Base64URL وليسا مشفَّرَين. التوقيع يثبت فقط أن الرمز لم يُعبَث به — لكنه لا يخفي محتواه.
ماذا يعني التحقق من JWT؟
التحقق يعني إعادة حساب التوقيع باستخدام السر أو المفتاح العام المتوقع، ومقارنته بالتوقيع الموجود على الرمز. إذا تطابقا فالـ payload موثوق ولم يُعدَّل.
هل أضع كلمات المرور داخل JWT؟
لا. أي شخص يحصل على الرمز يستطيع قراءة الـ payload. اكتفِ بمعرّفات و claims غير حساسة، واعتمد على فترات صلاحية قصيرة مع refresh tokens لتعزيز الأمان.

اعرف المزيد

أدوات مطورين أخرى

تعلّم البرمجة مع Coddy

ابدأ الآن