ما هو JWT؟
رمز JWT سلسلة مضغوطة من ثلاثة أجزاء بترميز Base64url — header.payload.signature — تحمل مطالبات عن مستخدم أو عميل (الموضوع والأدوار والانتهاء) مع توقيع يمكن للمستقبِل التحقق منه. عُرّف في RFC 7519 مع قواعد توقيعه في RFC 7515 و7518، وهو الصيغة المعتادة لرموز وصول OAuth 2.0 ورموز هوية OpenID Connect. الحمولة مرمّزة فقط لا مشفّرة: من يملك الرمز يستطيع قراءتها.
ملاحظة أمنية: فك الترميز ليس تحققاً. يجب على الخادم فحص التوقيع بخوارزمية مثبّتة ورفض alg=none والتحقق من exp وiss وaud — والرمز الحقيقي الذي يُلصق في أي مكان يبقى سراً حتى ينتهي.
اقرأ الدليل: ما هو JWT؟ شرح رموز JSON Web Token
كيفية استخدام محلّل مطالبات JWT
- الصق الرمز الذي تريد تدقيقه.
- اطّلع على الدرجة والنتائج المرتّبة حسب الخطورة.
- طبّق التوصية المجاورة لكل نتيجة (مثل تقصير مدة الصلاحية أو إضافة aud).
- أعد إصدار الرمز وحلّله مجدداً حتى لا تبقى سوى العناصر الإعلامية.
مزايا محلّل مطالبات JWT
- يفحص المطالبات المطلوبة والموصى بها: exp وiat وnbf وiss وaud وsub وjti
- يرصد مدد الصلاحية الطويلة، وiat في المستقبل، ونوافذ الصلاحية المقلوبة، والطوابع الزمنية بالميلي ثانية
- يكتشف الأسرار والبيانات الشخصية الموضوعة في الحمولة
- ينبّه إلى النطاقات (scopes) الواسعة وقوائم الأدوار الضخمة والحمولات المفرطة الحجم
- يضمّن مخاطر الترويسة (alg=none وjku/x5u وkid المريب) في التقرير نفسه
- درجة أمنية مع عدد النتائج حسب الخطورة وجدول نتائج مرتّب حسب الأولوية
مثال على محلّل مطالبات JWT
تدقيق رمز مدة صلاحيته 76 عاماً
الإدخال:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJzdWIiOiJ1c2VyXzhmM2EyYyIsImF1ZCI6ImFwaTovL29yZGVycyIsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjo0MTAyNDQ0ODAwLCJlbWFpbCI6ImxheWxhQGV4YW1wbGUuY29tIiwic2NvcGUiOiJvcmRlcnM6cmVhZCBhZG1pbiJ9.CraV2QXmv79l2iX65YYWm0DtPZw7-Gh1S55W2vuwSO8النتيجة:
Score 66/100 (Risky)
High — Very long lifetime (76y 2mo): access tokens should live minutes to hours.
Medium — Broad scopes: "orders:read admin" grants wide access.
Low — Personal data present: email.
Info — No jti: a unique id enables revocation.الأسئلة الشائعة حول محلّل مطالبات JWT
ما معنى الدرجة الأمنية؟
تبدأ من 100 وتُخصم منها نقاط لكل نتيجة (40 للحرجة، و20 للعالية، و10 للمتوسطة، و4 للمنخفضة). وهي وسيلة سريعة لترتيب الأولويات، لا شهادة اعتماد — فاقرأ النتائج كلاً على حدة.
ما الفحوصات التي تُجرى؟
وجود exp وiat وnbf وiss وaud وsub وjti وصلاحيتها؛ ومدة صلاحية الرمز؛ والرموز المنتهية أو المؤرّخة في المستقبل؛ والأسرار أو البيانات الشخصية في الحمولة؛ وحجم الحمولة؛ والنطاقات المفرطة الاتساع؛ ومخاطر الترويسة مثل alg=none أو عناوين jku/x5u أو قيم kid المريبة.
لماذا تُعدّ مدة الصلاحية الطويلة مشكلة؟
يمكن إعادة استخدام رمز وصول مسرّب حتى تنتهي صلاحيته. توصي OWASP برموز وصول قصيرة العمر (من دقائق إلى ساعة) مقترنة برموز تحديث (refresh tokens)، بدلاً من رموز تعيش أياماً أو شهوراً.
لماذا تنبّهني الأداة بشأن مطالبة البريد الإلكتروني؟
حمولات JWT مقروءة لكل من يتعامل مع الرمز. تزيد البيانات الشخصية في الرموز من احتمال التعرّض وقد تخضع للوائح الخصوصية؛ فاقصر الحمولات على المعرّفات وبيانات التفويض.
ملاحظات تقنية
تتبع الفحوصات RFC 7519 (دلالات المطالبات) وRFC 8725 (أفضل الممارسات الحالية لـ JWT) وورقة إرشادات OWASP الخاصة بـ JSON Web Token. النتائج استدلالية — فقد تكون مدة الصلاحية الطويلة مقبولة لرمز تحديث مثلاً — لذا اقرأها في سياق طريقة استخدام الرمز.
المراجع
- RFC 7519: JSON Web Token (JWT)يعرّف صيغة JWT — الترويسة والحمولة والتوقيع — والمطالبات المسجّلة iss وsub وaud وexp وnbf وiat وjti.
- RFC 7515: JSON Web Signature (JWS)كيف يُوقَّع JWT ويُسلسَل: الترويسة المحمية ومدخل التوقيع والتسلسل المضغوط.
- RFC 7518: JSON Web Algorithms (JWA)الخوارزميات وراء ترويسة alg: HS256/384/512 وRS256 وES256 ومتطلبات حجم المفتاح لكل منها.