الويب والتشفير · 60دقيقة قراءة
JWT وحدة فك التشفير: ما هو موجود داخل الرمز المميز، وما هو غير
يتكون JSON Web Token من ثلاثة أجزاء base64url مفصولة بالنقاط، ويقوم جهاز فك ترميز JWT ببساطة بعكس التشفير حتى تتمكن من قراءتها. تحتوي الجملة الأخيرة على أهم حقيقة أمنية في هذه المقالة: فك تشفير الرمز المميز لا يثبت شيئًا عنه. يمكن لأي شخص إنشاء حمولة وترميزها وتسليمك رمزًا مميزًا جيدًا - فالتحقق عبارة عن عملية منفصلة تتطلب مفتاح التوقيع.
تم التحديث
الأجزاء الثلاثة
- الرأس - خوارزمية التوقيع (`alg`) ونوع الرمز المميز (`typ`)، على سبيل المثال HS256.
- الحمولة - المطالبات: من هو الرمز المميز ومتى تم إصداره ومتى تنتهي صلاحيته.
- التوقيع - يتم حسابه على الجزأين الأولين باستخدام مفتاح المُصدر، ولهذا السبب يظهره جهاز فك التشفير ولكن لا يمكنه التحقق منه.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 . eyJzdWIiOiIxMjMiLCJleHAiOjE3NjAwMDAwMDB9 . signature
header payload signature
الادعاءات التي تفسر معظم حالات الفشل
- `exp` (انتهاء الصلاحية) - السبب الوحيد الأكثر شيوعًا للرقم 401. يتم رفض الرمز المميز الذي انتهت صلاحيته قبل دقيقتين قبل فحص أي شيء آخر.
- `nbf` (ليس قبل) — الصورة المعكوسة: الرمز المميز المستخدم قبل رفض نافذة صلاحيته.
- `iat` (صدر في) — مفيد في معرفة عمر الجلسة، وفي اكتشاف الساعات التي لا تختلف.
- `aud` (الجمهور) و `iss` (المصدر) - تعني عدم التطابق هنا أن الرمز المميز صالح ولكن تم إصداره لخدمة مختلفة، والتي تفشل بطرق مربكة.
مطالبات الوقت هي ثواني UTC منذ عصر Unix. إذا بدا الرمز صالحًا ولكن تنتهي صلاحيته مبكرًا أو متأخرًا جدًا، فتحقق من وجود مشكلة في الساعة أو حمولة تحمل ميلي ثانية حيث كان من المتوقع الثواني.
لماذا لا يجب أن تثق أبدا`alg`0بشكل أعمى
هجومان قديمان بما يكفي ليكونا مشهورين وما زالا يظهران في البرية. ال`none`تخبر الخوارزمية المدقق بأنه لا يوجد توقيع على الإطلاق؛ الخادم الذي يقرأ الرأس بدلاً من فرض الخوارزمية المتوقعة الخاصة به يقبله. وفي حالة الخلط بين RSA/HS، يقوم المهاجم بالتوقيع باستخدام المفتاح العام باعتباره سر HMAC، مما يخدع خادمًا يقبل كلا العائلتين.يوجد الدفاع في كلتا الحالتين في أداة التحقق، وليس في وحدة فك التشفير: قم بتثبيت جانب خادم الخوارزمية المتوقعة ولا تستمدها أبدًا من الرمز المميز نفسه.
فك التشفير محليًا، دائمًا
JWT عبارة عن بيانات اعتماد: يمكن لأي شخص يحملها أن يعمل كمستخدم حتى تنتهي صلاحيتها. يؤدي لصق ملف حقيقي في موقع ويب ينشره على خادم إلى تسليم جلسة مباشرة دون أي فائدة، نظرًا لأن فك التشفير هو عملية حسابية base64url يمكن لأي متصفح القيام بها في أجزاء من الثانية. يقوم جهاز فك ترميز YamlBox JWT بتوزيع الرمز المميز في الصفحة، ويعرض مطالبات الطابع الزمني كتواريخ UTC قابلة للقراءة، ويستمر في العمل مع تعطيل الشبكة - وهو النوع الوحيد من وحدات فك التشفير التي تستحق الاستخدام في رمز الإنتاج.
روتين التصحيح الذي يعمل
- قم بفك تشفير وقراءة `exp` أولاً - نصف جميع تقارير "الرموز المميزة غير الصالحة" تنتهي هنا.
- تحقق من `aud` و`iss` مقابل ما تتوقعه واجهة برمجة التطبيقات (API)، ثم `nbf` للتأكد من انحراف الساعة.
- قارن المطالبات التي تم فك تشفيرها مع ما تفترضه التعليمات البرمجية الخاصة بك حول الأدوار أو النطاقات.
- إذا كانت المطالبات تبدو صحيحة وما زالت تفشل، فالمشكلة تكمن في التحقق - مفتاح خاطئ، أو سر تم تدويره، أو عدم تطابق الخوارزمية.
وحدة فك ترميز JWT — الأسئلة المتداولة
هل فك التشفير JWT يؤكد ذلك؟
لا، فك التشفير يعكس تشفير base64url ولا يحتاج إلى مفتاح، لذلك لا يمكن إثبات صحته. يقوم التحقق بإعادة حساب التوقيع باستخدام المفتاح السري أو العام للمصدر، وهو خطوة منفصلة لا يمكن إلا للخادم تنفيذها.
لماذا انتهت صلاحية JWT الخاص بي بالفعل؟
تحقق من المطالبة `exp` مقابل توقيت UTC الحالي. عادةً ما تكون الرموز قصيرة العمر - من دقائق إلى ساعة - والعميل الذي يقوم بتخزين واحدة مؤقتًا عبر نافذة التحديث هو الجاني المعتاد. قارن `iat` مع `exp` لمعرفة العمر الافتراضي الذي يقصده المُصدر.
هل من الآمن لصق إنتاج JWT في وحدة فك ترميز عبر الإنترنت؟
فقط في واحد يتم فك تشفيره بالكامل في متصفحك. يتلقى جهاز فك التشفير من جانب الخادم بيانات اعتماد مباشرة ويمكنه تسجيلها. قم بتفضيل وحدة فك ترميز من جانب العميل، وتعامل مع أي رمز مميز قمت بلصقه في موقع غير معروف باعتباره مخترقًا.
الأدوات المذكورة في هذه التدوينة
المزيد من المقالات للقراءة
50دقيقة قراءة
Base64 فك التشفير والتشفير: للنقل وليس الأمان
يقوم Base64 بفك التشفير والتشفير في المتصفح - قاعدة الحجم 4/3، والحشو، ومتغير base64url، وخطأ Unicode الذي يجعل النص الذي تم فك تشفيره يبدو وكأنه قمامة.
50دقيقة قراءة
URL الترميز: متى تهرب، ومتى تكسر الأشياء
يتم تشفير عنوان URL وفك تشفيره بشكل صحيح — أحرف محجوزة، بالإضافة إلى %20، وencodeURI مقابل encodeURIComponent، وأخطاء التشفير المزدوج خلف الروابط المعطلة.
50دقيقة قراءة
محول الطابع الزمني: وقت العصر دون التخمين
محول الطابع الزمني لنظام Unix الذي يعمل في كلا الاتجاهين — الثواني مقابل المللي ثانية، والتوقيت العالمي المنسق مقابل التوقيت المحلي، وحدود 2038 التي لا تزال تكسر الأنظمة طويلة العمر.