المبرمج أرسل لي رمز دخول JWT لربط المتجر، هل يمكنني قراءة ما بداخله هنا، وهل فكّه يعني أنه موثوق؟
نعم تستطيع قراءته: الصق الجزء الأوسط فقط، بين النقطتين، فهو Base64 بالأبجدية الآمنة للروابط دون حشو، والأداة تضيف علامات = الناقصة وتعرض JSON الذي بداخله. لكن الفك لا يتحقق من التوقيع، فهو يخبرك بما يدّعيه الرمز لا بأنه أصلي. والرمز الصالح يمنح صلاحية دخول، فعامله ككلمة مرور.
مم يتكون رمز JWT؟
الرمز ثلاثة أجزاء تفصل بينها نقطتان: الأول يصف نوع التوقيع، والثاني هو المحتوى، أي «الادعاءات» مثل رقم المستخدم وصلاحيته وتاريخ انتهاء الرمز، والثالث هو التوقيع. الجزءان الأول والثاني مجرد JSON مرمّز بصيغة Base64، بلا أي تشفير. لهذا يستطيع أي شخص يرى الرمز أن يقرأ ما فيه.
مثال: قراءة المحتوى
الجزء الأوسط من رمز تجريبي كان:
eyJzdWIiOiIxMjMiLCJyb2xlIjoiYWRtaW4ifQ
لصقناه في وضع «فك الترميز» فظهر:
{"sub":"123","role":"admin"}
ومعه ملاحظة: «الحشو ناقص: أضيفت 2 من علامات = لإكمال الطول. هذا معتاد في الصيغة الآمنة للروابط». أي أن الرمز يدّعي أنه للمستخدم 123 بصلاحية admin. وفككنا الجزء الأول من رمز آخر فظهر {"alg":"HS256","typ":"JWT"}، أي نوع التوقيع.
لا تلصق الرمز كاملًا
جربنا لصق الأجزاء الثلاثة معًا، فرفضت الأداة برسالة «الموضع 37: حرف ليس من أبجدية Base64» وأشارت إلى النقطة الأولى. النقطة ليست من الأبجدية، فالأجزاء تُفك كل واحد وحده. والجزء الثالث، التوقيع، بايتات لا نص، فلا فائدة من فكه.
- انسخ الرمز، ثم انسخ منه ما بين النقطة الأولى والثانية فقط.
- افتح ترميز وفك Base64 واختر «فك الترميز» والصق الجزء الأوسط.
- اقرأ JSON الناتج، وإن كان طويلًا فنسّقه في منسّق ومدقّق JSON ليسهل تتبعه.
- امسح الحقل بعد الانتهاء، ولا تحفظ الرمز في ملاحظة أو محادثة.
لماذا لا يعني الفك أن الرمز موثوق؟
التحقق من JWT يعني حساب التوقيع من الجزأين الأول والثاني بالمفتاح السري، ومقارنته بالجزء الثالث. هذا يحتاج المفتاح الذي يملكه النظام الذي أصدر الرمز، ولا تفعله هذه الأداة ولا أي أداة فك Base64. فأي شخص يستطيع كتابة {"role":"admin"} وترميزها ووضعها في رمز مزيف يبدو سليمًا عند الفك. الفك يجيب عن سؤال «ماذا يقول الرمز؟» فقط.
الرمز سر، رغم أن محتواه مقروء
- الرمز الصالح يعمل مثل كلمة مرور مؤقتة: من يملكه يستطيع استخدام الصلاحيات التي فيه حتى تنتهي.
- الأداة تعمل داخل متصفحك ولا ترسل الرمز إلى أي مكان، لكن احذر من لصقه في أدوات لا تعرف أين ترسل البيانات.
- إن أرسله المبرمج في محادثة عامة أو بريد مشترك، فاطلب منه إلغاءه وإصدار رمز جديد.
- ولأن المحتوى مقروء لكل من يرى الرمز، فلا يُفترض أن يحتوي معلومات سرية مثل كلمات المرور.
أسئلة شائعة
ماذا يعني حقل exp في المحتوى؟
هو وقت انتهاء الرمز، مكتوبًا بعدد الثواني منذ بداية عام 1970. الأداة تعرضه رقمًا كما هو ولا تحوّله إلى تاريخ.
لماذا لا توجد علامات = في رموز JWT؟
لأن هذه الرموز تستخدم الأبجدية الآمنة للروابط وتحذف الحشو. الأداة تكمل العلامات الناقصة وتذكر ذلك في ملاحظة.
هل تستطيع الأداة التحقق من التوقيع إن أعطيتها المفتاح؟
لا. هي أداة ترميز وفك فقط، والتحقق يتم في النظام الذي أصدر الرمز.
