Command Palette

Search for a command to run...

JWT Decoder Online: فك تشفير الرموز المميزة الخاصة بك وفحصها وفهمها فعليًا

JWT Decoder Online: فك تشفير الرموز المميزة الخاصة بك وفحصها وفهمها فعليًا

T
Toolz Team
|Jul 11, 2026|21 دقيقة قراءة

جزء من مجموعة تأمين

في الربيع الماضي، بدأ المستخدمون في تسجيل الخروج من Toolz.dev. ليس في بعض الأحيان - باستمرار. قم بتسجيل الدخول، وانقر فوق أداة واحدة، ثم قم بازدهار: العودة إلى شاشة تسجيل الدخول. تصدر الواجهة الخلفية رموز وصول مدتها 15 دقيقة ورموز تحديث مدتها 7 أيام، وقد اختبرت I&#39؛d هذا التدفق مائة مرة. لذلك من الطبيعي أن أفترض أن نقطة نهاية التحديث معطلة وقضيت ساعة وأربعين دقيقة في قراءة البرامج الوسيطة Express التي ليس بها أي خطأ.

ثم فعلت الشيء الواضح أخيرًا. لقد أمسكت برمز وصول مباشر من رأس التفويض، وألصقته في وحدة فك التشفير، ونظرت إلى المطالبات. ال exp كان بخير. ال iat كان بخير. كان الرمز صالحًا لمدة 14 دقيقة أخرى. مما يعني أن الخادم كان على ما يرام - ويجب أن يكون الخطأ على العميل. بالتأكيد: كانت الواجهة الأمامية الخاصة بي تتحقق payload.exp < Date.now(). exp هي ثواني منذ العصر. Date.now() هو ميلي ثانية. يبدو أن كل رمز مميز تم سكه حديثًا قد انتهت صلاحيته في مكان ما حوالي عام 1970، لذا فإن العميل &quot؛ بشكل مفيد واقتباس؛ قام بتسجيل خروج الجميع قبل أن يكون للخادم رأي. ثلاثة أحرف من الإصلاح - /1000- بعد ما يقرب من ساعتين من الصيد.

That&#39؛ الملعب بأكمله لوجود وحدة فك ترميز JWT في صندوق الأدوات الخاص بك. يبدو JWT مثل ضجيج الخط - ثلاث قطع من الثرثرة الأساسية64url ملتصقة ببعضها البعض بالنقاط - ولكن &#39؛s فقط JSON يرتدي معطفًا واقٍ من المطر. في اللحظة التي يمكنك فيها قراءة المطالبات، تتوقف نصف أخطاء المصادقة عن كونها ألغازًا. جمهور خاطئ، رمز مميز منتهي الصلاحية، دور مفقود، انحراف الساعة، ميلي ثانية مقابل ثانية - هم &#39؛ جميعهم يجلسون هناك بنص عادي بمجرد فك التشفير.

ولكن - وهذا مهم - حيث لا يكون فك التشفير خيارًا محايدًا. رمز الوصول الحقيقي هو بيانات اعتماد مباشرة. الصقه في موقع فك التشفير الذي يقوم بشحن الرموز المميزة إلى الخادم، وأنت &#39؛ لقد قمت للتو بإيداع مفتاح عمل لواجهة برمجة التطبيقات الخاصة بك في سجلات طلب غريبة &#39؛s. هذا & #39؛ هذا هو السبب المحدد الذي دفعني إلى بناء Toolz.dev JWT فك التشفير للتشغيل بالكامل في متصفحك. المزيد عن ذلك أدناه.

ليرة تركية؛DR: لفك تشفير JWT عبر الإنترنت، قم بلصقه في Toolz.dev JWT فك التشفير- يقوم بتقسيم الرأس والحمولة والتوقيع على الفور، ويترجم exp/iat في التواريخ البشرية، ويعمل بنسبة 100% من جانب العميل حتى لا يترك الرمز المميز جهازك أبدًا. شيء واحد يجب حرقه في الذاكرة: فك التشفير لا يتم التحقق منه. JWT هو مجرد JSON مشفر بقاعدة 64url ويمكن لأي شخص قراءته - فقط التحقق من التوقيع باستخدام المفتاح يثبت أنه &#39؛s جدير بالثقة.

الميزات الرئيسية

تقسيم الرأس والحمولة والتوقيع الفوري

الصق رمزًا مميزًا ويقوم جهاز فك التشفير على الفور بتقسيمه إلى ثلاثة أجزاء: الرأس (نوع الخوارزمية والرمز المميز)، والحمولة (مطالباتك)، والتوقيع (المشفر الأيسر، لأنه &#39؛s MAC خام أو توقيع - هناك &#39؛ لا يوجد شيء يمكن قراءته بواسطة الإنسان هناك). لا يوجد زر إرسال، ولا إعادة تحميل للصفحة. يعكس هذا بالضبط ما تفعله مكتبة المصادقة الخاصة بك داخليًا قبل التحقق: قم بالتقسيم .، base64url-فك تشفير الجزأين الأولين، قم بتحليلهما كـ JSON. إن رؤية الأجزاء الموضوعة جنبًا إلى جنب هي أسرع طريقة لبناء الحدس للتنسيق. بعد بضع عشرات من الرموز المميزة، ستبدأ أنت و#39؛ في التعرف على رمز RS256 Auth0 المميز مقابل رمز HS256 Laravel المميز في لمحة - حيث يكشفه الرأس في كل مرة.

طوابع زمنية قابلة للقراءة من قبل الإنسان، وiat، وnbf

الميزة الوحيدة الأكثر فائدة، النقطة. exp، iat، و nbf هل قيم NumericDate - الثواني منذ عصر Unix - ولا يستطيع أحد، بما فيهم أنا، قراءتها 1783430700 وأخبرك ما إذا كان ذلك &#39؛ يوم الثلاثاء المقبل أم الموت الحراري للكون. يقوم جهاز فك التشفير بتحويل كل مطالبة بالطابع الزمني إلى تاريخ ووقت فعليين، في المنطقة الزمنية المحلية الخاصة بك وUTC. هذا هو المكان الذي يصبح فيه خطأ المللي ثانية الكلاسيكي مرئيًا على الفور: إذا تم فك تشفيره exp يُعرض كتاريخ في عام 56000، شخص ما قام بحشو جافا سكريبت Date.now() في حقل يتوقع الثواني. أنا &#39؛ لقد قمت بشحن هذا الخطأ. رؤية التاريخ السخيف هو التشخيص. للحصول على طابع زمني أعمق لعلم الآثار، محول الطابع الزمني على بعد علامة تبويب واحدة.

انتهاء العد التنازلي والحالة

بالإضافة إلى مجرد عرض التاريخ، يخبرك جهاز فك التشفير بالحالة الحالية للرمز المميز &#39؛: صالح، أو منتهي الصلاحية، أو غير نشط بعد (متى nbf في المستقبل). إذا كان الرمز المميز &#39؛ لا يزال على قيد الحياة، فستحصل على العد التنازلي حتى انتهاء الصلاحية. يبدو هذا بمثابة راحة صغيرة حتى تقوم أنت و#39؛ بإعادة تصحيح أخطاء 401 المتقطعة وتحتاج إلى الإجابة والاقتباس؛ هل كان هذا الرمز المميز محددًا ميتًا عند بدء الطلب؟&quot؛ مرارا وتكرارا. مقارنة العد التنازلي مع الخادم الخاص بك و#39؛ تم تكوين TTL أيضًا، حيث يتم اكتشاف التكوين الخاطئ بسرعة - إذا كان من المفترض أن تعيش رموز الوصول الخاصة بك لمدة 15 دقيقة وكان العد التنازلي يعني 6 أيام، فإن رمز الإصدار الخاص بك يقرأ قيمة التكوين الخاطئة.

الخوارزمية وفحص الرأس

يظهر لك الرأس الذي تم فك تشفيره alg و typ (زائد kid والأصدقاء عند الحضور)، والذي يجيب على الأسئلة التي تهم الأمان، وليس فقط تصحيح الأخطاء. هل هذا الرمز HS256 أو RS256؟ هل kid قم بمطابقة المفتاح الذي تخدمه نقطة نهاية JWKS الخاصة بك بالفعل؟ والكبير: هو alg شيء لا ينبغي أن يكون أبدا، مثل none؟ المطالبة بالرموز "alg": "none" إما أن تكون تركيبات اختبارية أو يقوم شخص ما بفحص المدقق الخاص بك - وفي كلتا الحالتين، تريد رؤيته على الفور. أقوم بفحص الرأس أولاً على كل رمز غير مألوف، قبل أن أقرأ مطالبة واحدة.

مطالبات JSON المنسقة والمظللة ببناء الجملة

الحمولات الخام التي تم فك تشفيرها هي عبارة عن نقاط JSON أحادية السطر، ويحب موفرو الهوية حزمها: كائنات متداخلة، ومطالبات مخصصة بمسافات الأسماء، ومصفوفات من النطاقات. يقوم جهاز فك التشفير بطباعة كل شيء بشكل جميل مع تمييز بناء الجملة لذلك roles، scope، aud المصفوفات وكائنات الأذونات المتداخلة قابلة للمسح الضوئي بالفعل. It&#39؛ نفس المعاملة تنسيق JSON يعطي JSON تعسفيًا، ويتم تطبيقه تلقائيًا على مطالباتك. عندما تقوم أنت و#39؛إعادة مقارنة رمزين مميزين - على سبيل المثال، أحدهما من مستخدم يمكنه الوصول إلى نقطة النهاية والآخر من مستخدم يمكنه &#39؛t - يحول الإخراج المنسق تمرين التحديق إلى فرق مدته عشر ثوانٍ.

100% من جانب العميل - الرمز المميز الخاص بك لا يترك المتصفح أبدًا

هذه هي الميزة التي يقاتل من أجلها I&#39؛d. رمز الوصول الملصق ليس عينة من البيانات - فهو &#39؛ بيانات اعتماد مباشرة تتم مصادقتها كمستخدم حقيقي حتى exp. أي وحدة فك ترميز تنشر رمزك المميز على الواجهة الخلفية قد كتبت للتو مفتاح عمل في سجلات الخادم، والتحليلات، وربما أداة تعقب أخطاء تابعة لجهة خارجية. يقوم جهاز فك ترميز Toolz.dev بكل عمليات فك التشفير في JavaScript، في علامة التبويب الخاصة بك. لا يتم نقل أي شيء، ولا يتم تخزين أي شيء. Don&#39؛ خذ كلمتي على محمل الجد: افتح DevTools، وشاهد علامة تبويب الشبكة، والصق رمزًا مميزًا. صفر طلبات. لقد كتبت سبب أهمية هذه البنية لكل أداة إدخال حساسة مقالتي عن خصوصية البيانات في الأدوات عبر الإنترنت.

يعمل مع أي JWT، من أي كومة

JWTs هي معيار - RFC 7519- لذا فإن وحدة فك التشفير لا تهتم بـ &#39؛ تهتم بمن سكها. رموز Auth0 وFirebase مع مطالباتها المخصصة ذات مساحة الاسم، أو إعدادات Laravel Sanctum المجاورة، أو Keycloak، أو Supabase، أو AWS Cognito، أو رموز HS256 الملفوفة يدويًا، أو علامات الواجهة الخلفية Express الخاصة بي لـ Toolz.dev - إذا كان &#39؛s ثلاثة مقاطع أساسية 64url متصلة بنقاط، يتم فك تشفيرها. يتضمن ذلك JWTs المشوهة تقريبًا: إذا فاز الجزء الثاني &#39؛ t بالتحليل كـ JSON، يخبرك جهاز فك التشفير بالجزء المكسور بدلاً من الفشل بصمت، وهو في حد ذاته تشخيص. الرموز المميزة المقطوعة على النسخة أكثر شيوعًا منك &#39؛د أعتقد.

كيفية استخدام وحدة فك ترميز JWT

الخطوة 1: احصل على الرمز المميز

ابحث عن الرمز المميز أينما يحتفظ به تطبيقك. الأكثر شيوعًا: DevTools → علامة تبويب الشبكة → انقر فوق طلب → انسخ Authorization: Bearer eyJ... قيمة الرأس (بدون الكلمة &quot؛ Bearer&quot؛). أو تحقق من التطبيق → التخزين المحلي / ملفات تعريف الارتباط، نظرًا لأن الكثير من التطبيقات تخزن الرموز المميزة هناك. في الواجهة الخلفية، قم بتسجيله أو سحبه من مجموعة الاختبار الخاصة بك. انسخ السلسلة بأكملها - JWT الذي يفقد أحرفه القليلة الأخيرة لا يزال يفك تشفيره ولكنه لن يتحقق أبدًا، وthat&#39؛s ساعة مربكة لا تحتاجها &#39؛t.

الخطوة 2: لصقها

افتح ال JWT فك التشفير والصق. يحدث فك التشفير أثناء الكتابة - بدون زر. إذا كنت أنت و#39؛ متوترين بشأن لصق رمز الإنتاج في أي مكان (غريزة جيدة)، افتح علامة تبويب الشبكة أولاً وتأكد من عدم إرسال أي شيء. إنه &#39؛ر. يستغرق فحص جنون العظمة عشر ثوانٍ وهو &#39؛s بالضبط ما يفعله I&#39؛d على أداة شخص آخر و#39؛s.

الخطوة 3: اقرأ الأجزاء الثلاثة

الرأس أولاً: تأكيد alg هو ما يتوقعه نظامك و typ يكون JWT. ثم الحمولة: iss (من سكها)، aud (من هو &#39؛s ل)، sub (أي مستخدم)، بالإضافة إلى أي أدوار أو نطاقات أو مطالبات مخصصة يضيفها مكدسك. يظل التوقيع مشفرًا - it&#39؛ مخرجات التشفير، وليس البيانات. إذا قال الرأس noneتوقف وانطلق وتحقق من قائمة السماح الخاصة بمدققك &#39؛ قبل أي شيء آخر.

الخطوة 4: التحقق من الخبرة والمطالبات التي تعض

انظر إلى فك التشفير exp التاريخ وحالة انتهاء الصلاحية. منتهي الصلاحية؟ هناك&#39؛s 401 الخاص بك. صالح ولكن مرفوض على أي حال؟ قارن الآن aud و iss ضد تكوين المدقق &#39؛s - عدم التطابق هناك السبب الثاني الأكثر شيوعًا بعد انتهاء الصلاحية. وإذا تم تقديم أي طابع زمني على شكل سنة مكونة من خمسة أرقام، تهانينا: أنت &#39؛ لقد وجدت خطأ ميلي ثانية مقابل ثانية، وأنا أرحب بكم في نادٍ كبير جدًا.

ماذا &#39؛s في الواقع داخل JWT؟ تشريح الأجزاء الثلاثة

رمز ويب JSON، المحدد في RFC 7519، عبارة عن ثلاثة مقاطع مشفرة بـ base64url متصلة بفترات: header.payload.signature. (بالتأكيد، الصنف الموقع هو JWS لكل RFC 7515 - هناك &#39؛ ابن عم مشفر، JWE، ولكن تقريبًا كل رمز مميز أنت &#39؛ سنلتقي في البرية هو JWS موقع)

الكلمة الأساسية هي مشفرة. Base64url هو ترميز نقل - طريقة قابلة للعكس لجعل البايتات آمنة لعنوان URL - وليس تشفيرًا. يمكن لأي شخص يحمل JWT قراءة كل شيء في الرأس والحمولة بدون مفاتيح، أو أسرار صفر، أو جهد صفر. العب بالتشفير الخام في محول BASE64 وأنت &#39؛ سوف أراها &#39؛s الأبجدية القياسية مع + و / مبادلة ل - و _، انخفضت الحشو. لقد كتبت المزيد عن التشفير نفسه في دليل الترميز BASE64.

قم بفك تشفير الرأس النموذجي وستحصل على:

{ "alg": "HS256", "typ": "JWT" }

والحمولة المبنية من المطالبات المسجلة يحدد RFC 7519 ما يلي

{
  "iss": "https://toolz.dev",
  "sub": "user_8f3a2c",
  "aud": "toolz-api",
  "exp": 1783431600,
  "nbf": 1783430700,
  "iat": 1783430700,
  "jti": "b4d1f0e2"
}

iss هو المصدر، sub الموضوع (عادةً معرف المستخدم الخاص بك)، aud الجمهور المستهدف، jti معرف رمزي فريد. exp، nbf، و iat هي قيم NumericDate: ثواني منذ عصر يونكس. ليس ميلي ثانية. جافا سكريبت &#39؛س Date.now() تُرجع المللي ثانية، ويؤدي الخلط بين الاثنين إما إلى إنتاج رموز مميزة تنتهي صلاحيتها على الفور (خطأ تسجيل الخروج في Toolz.dev الخاص بي) أو رموز مميزة بها exp تواريخ في عام 56000 لا تنتهي صلاحيتها أبدًا - وهو الفشل الأكثر خطورة بهدوء.

HS256 مقابل RS256. يوقع HS256 مع HMAC على سر مشترك - سريع وبسيط، ولكن كل خدمة تتحقق من الرموز المميزة تحمل السر أيضًا، ويمكن لأي شخص يحمل السر ذلك نعناع الرموز المميزة. غرامة على كتلة متراصة مثل الواجهة الخلفية الخاصة بي، حيث يكون المُصدر والمدقق هما نفس العملية. يوقع RS256 بمفتاح خاص ويتحقق بمفتاح عام، حتى تتمكن من نشر المفتاح العام (عبر JWKS) والسماح لعشرات الخدمات الصغيرة بالتحقق دون أن يتمكن أي منها من تزوير. يجب أن تكون الأنظمة الموزعة ومعرّفو الهوية التابعون لجهات خارجية على RS256 أو أشقائها ECDSA/EdDSA.

ال alg: none هجوم. يسمح RFC 7519 بـ JWTs غير الآمنة حيث alg يكون none والتوقيع فارغ. وثقت المكتبات المبكرة بالرأس &#39؛s alg بشكل أعمى، لذلك قام المهاجمون بتجريد التوقيع، وتعيينه alg إلى none، وأبحر من خلال التحقق مع المطالبات التي يتحكم فيها المهاجم بالكامل. تقوم الخدعة ذات الصلة بتبديل RS256 بـ HS256 بحيث يستخدم المدقق عام المفتاح باعتباره سر HMAC. ولهذا السبب فإن RFC 8725 - أفضل الممارسات الحالية لرمز الويب JSON - غير صريح: يجب على المدقق تثبيت خوارزمياته المسموح بها في التعليمات البرمجية وعدم السماح للرمز المميز بالاختيار أبدًا. إذا لم يتم استدعاء مكتبتك &#39؛t قم بتضمين ملف صريح algorithms قائمة، أصلح ذلك اليوم.

فك التشفير مقابل التحقق - الخط المهم. فك التشفير هو القراءة؛ التحقق هو الثقة. الفرق في الكود:

// Decoding: no secret, no trust. Anyone can do this.
const payload = JSON.parse(
  Buffer.from(token.split('.')[1], 'base64url').toString()
);

// Verifying: proves the signature AND pins the algorithm.
const verified = jwt.verify(token, secret, { algorithms: ['HS256'] });

يقوم جهاز فك التشفير عبر الإنترنت بأول شيء. يمكنه أن يظهر لك المطالبات؛ لا يمكنه - ولا ينبغي له أن يتظاهر - أن يخبرك أن الرمز المميز أصلي. فقط verifyبالمفتاح يفعل ذلك. لا تتخذ أبدًا قرارات الترخيص بشأن المطالبات التي تم فك تشفيرها ولكن لم يتم التحقق منها.

مما يؤدي إلى القاعدة الأخيرة: لا تضع أسرارًا أبدًا في حمولة JWT. لا توجد كلمات مرور، ولا مفاتيح API، ولا بيانات أنت & #39؛ أمانع أن يقرأ المهاجم. الحمولة عامة عن طريق البناء - موقعة ضد التلاعب، ومفتوحة على مصراعيها للقراءة. إذا كان &#39؛s في الرمز المميز، افترض أن الإنترنت بأكمله يمكنه رؤيته.

حالات الاستخدام الشائعة

تصحيح الأخطاء 401 أثناء تطوير واجهة برمجة التطبيقات

401 هو رمز الحالة الأقل إفادة في HTTP. قال الخادم لا - ولكن هل انتهت صلاحية الرمز المميز؟ جمهور خاطئ؟ تم التوقيع بمفتاح قديم؟ مفقود تمامًا لأن المعترض الخاص بك لم &#39؛ إطلاق النار؟ يؤدي فك تشفير الرمز المميز الفعلي من الطلب الفاشل إلى انهيار مساحة البحث في ثوانٍ. نصف الوقت exp يجيب عليه وحده. النصف الآخر، مقارنة iss و aud مقابل أداة التحقق الخاصة بك &#39؛ يعثر تكوين البيئة على رمز dev يتم إعادة تشغيله مقابل التدريج، أو العكس. أحتفظ بوحدة فك التشفير مثبتة بجوار عميل HTTP الخاص بي لهذه الحلقة بالضبط؛ it&#39؛ إدخال أساسي في بلدي مجموعة أدوات تصحيح أخطاء API. قم بفك التشفير أولاً، واقرأ البرامج الوسيطة ثانيًا - كلفني الطلب العكسي ساعة وأربعين دقيقة مرة واحدة، وأعتزم الاستمرار في جمع الفائدة على هذا الدرس.

شرح عمليات تسجيل الخروج المفاجئة

عندما يقوم المستخدمون بالإبلاغ عن &quot؛ فإنه يستمر في تسجيل خروجي، &quot؛ الطوابع الزمنية للرمز المميز &#39؛ هي بيان الشاهد الخاص بك. قم بفك تشفير رمز وصول جديد وتحقق من الفجوة بينهما iat و exp- هل هي في الواقع الـ 15 دقيقة التي قمت بتكوينها، أم أن env var تجاوزتها إلى 60 ثانية؟ ثم تحقق مما إذا كانت نافذة التحديث المميزة &#39؛s لمدة 7 أيام هي ما تعتقده. يظهر انحراف الساعة هنا أيضًا: إذا كانت ساعة إصدار &#39؛s تعمل بسرعة بضع دقائق، فإن الرموز المميزة تصل قديمة بالفعل بواسطة حساب العميل &#39؛s. وبالطبع، فإن خطأ المقارنة بين الثواني مقابل المللي ثانية - الذي قام بت Toolz.dev - يعلن عن نفسه في اللحظة التي ترى فيها علامة صالحة تمامًا exp على الرمز المميز، أقسم عميلك أن انتهاء الصلاحية.

تدقيق ما يضعه موفر الهوية الخاص بك في الرموز المميزة

لم تقم معظم الفرق أبدًا بقراءة الرموز المميزة الخاصة بها، وهي تستحق القيام بها &#39؛s. قم بفك تشفير واحد وقد تجد عناوين البريد الإلكتروني والأسماء الكاملة وعناوين URL للصور ومعرفات المستأجر - PII متواجدًا في كل طلب واجهة برمجة تطبيقات، ومخزنًا في التخزين المحلي، ويمكن قراءته بواسطة أي شيء يضع يديه على الرمز المميز. هنا &#39؛ موقفي العنيد، وI&#39؛ سوف أجادله مع أي شخص: don&#39؛t ضع رسائل البريد الإلكتروني للمستخدم في حمولات JWT. ال sub المطالبة موجودة على وجه التحديد حتى تتمكن من حمل معرف غير شفاف والبحث عن التفاصيل البشرية من جانب الخادم. كل مطالبة إضافية هي بيانات أنت & #39؛ إعادة البث والبايتات التي تدفع ثمنها & #39؛ إعادة الدفع عند كل طلب. فك التشفير، والتدقيق، ثم قم بقص تعيينات المطالبة الخاصة بـ IdP&#39؛s.

التحقق من الأدوار والنطاقات أثناء تصحيح أخطاء التفويض

المصادقة تقول من أنت؛ التفويض يقول ما يمكنك فعله - وعندما يسيء التفويض التصرف، تكون الإجابة في المطالبات. يقسم المستخدم أنهم &#39؛ هل هم مسؤولون ولكنهم يحصلون على 403 ثانية؟ فك رموز الرمز المميز الخاص بهم. لو role يقول user، تم سك الرمز المميز قبل العرض الترويجي ويحتاجون إلى إعادة تسجيل الدخول - وهي نتيجة كلاسيكية للرموز المميزة عديمة الحالة التي تحمل لقطات قديمة. إذا كان الدور موجودًا ولكن الوصول لا يزال فاشلاً، فتحقق من اسم المطالبة وشكلها بالضبط roles مقابل role، المصفوفة مقابل السلسلة، scope كسلسلة محددة بالمسافة مقابل scp كمصفوفة. فحص البرمجيات الوسيطة payload.roles.includes('admin') ضد الحمولة التي لديها role: "admin" يفشل بصمت وغضب. عادةً ما يقوم رمزان مميزان تم فك تشفيرهما جنبًا إلى جنب - أحدهما يعمل والآخر لا - بتسوية الأمر في أقل من دقيقة.

مقارنة الوصول وتحديث محتويات الرمز المميز

في إعداد الرمز المزدوج مثل جهازي، يجب أن يبدو الرمزان مختلفين بشكل كبير، وفك تشفير كليهما هو التدقيق. رمز الوصول: قصير exp، بالإضافة إلى كل المطالبات التي تحتاجها واجهة برمجة التطبيقات لكل طلب. رمز التحديث: طويل exp، أ jti لتتبع الإلغاء، ولا شيء أقرب ما يكون إلى أي شيء آخر قدر الإمكان. إذا كان رمز التحديث الخاص بك يحمل الأدوار وبيانات الملف الشخصي، فسيتم إيقاف تشغيل شيء ما &#39؛s - it&#39؛s على الإطلاق إلى نقطة نهاية واحدة فقط ويجب &#39؛t تكرار وظيفة رمز الوصول &#39؛s. يلتقط هذا الفحص جنبًا إلى جنب أيضًا فئة الأخطاء المحرجة حيث يحصل كلا الرمزين الرمزيين عن طريق الخطأ على نفس TTL، مما يحول &quot؛ نافذة وصول وعلامة اقتباس مدتها 15 دقيقة؛ إلى مسرح الأمان. اسألني كيف أعرف للتحقق من ذلك.

JWT مقابل رموز الجلسة غير الشفافة: مقارنة صادقة

JWT رمز جلسة غير شفاف
انعدام الجنسية مكتفية ذاتيا؛ يتم التحقق من أي خادم يحتوي على المفتاح دون إجراء بحث يجب على الخادم (أو المتجر المشترك مثل Redis) البحث عن كل طلب
إلغاء صعب - صالح حتى exp إلا إذا قمت ببناء قائمة الإنكار، والتي تعيد تقديم الحالة تافه - احذف السجل من جانب الخادم، وسيموت الرمز المميز على الفور
الحجم لكل طلب مئات البايتات إلى أكثر من كيلو بايت، على كل طلب ~32.64 بايت
حيث يحدث التحقق من الصحة في أي مكان يحمل المفتاح (العام) - رائع للخدمات الصغيرة أينما يعيش متجر الجلسة
المطالبة بالانتعاش لقطة في وقت الإصدار؛ تغييرات الدور تنتظر إعادة الإصدار حالي دائمًا - يقرأ البيانات الحية
قابلية التصحيح فك تشفير وقراءة المطالبات على الفور معتمة حسب التصميم؛ يتطلب الوصول إلى المتجر

أستخدم JWTs لـ Toolz.dev وI&#39؛ سأظل أخبرك أنهم &#39؛ موصوفة بشكل مبالغ فيه. قصة الإلغاء سيئة حقًا: عندما تحظر مستخدمًا ما، يستمر رمز الوصول الخاص به في العمل حتى exp- وهذا هو بالضبط سبب بث رموز الوصول الخاصة بي لمدة 15 دقيقة ورمز التحديث لمدة 7 أيام هو الشيء الذي يمكنني قتله من جانب الخادم. هذا الهجين هو النمط الصادق: JWTs عديمة الحالة قصيرة العمر للتحقق الرخيص، ونقطة تفتيش واحدة للتحكم. إذا كنت &#39؛ إذا كنت تقوم بتشغيل كتلة متراصة بقاعدة بيانات واحدة، فإن الجلسات البسيطة أبسط وأصغر وقابلة للإلغاء على الفور - القوة العظمى للتحقق الموزع في JWT&#39؛ تحل مشكلة تواجهها &#39؛ لديك.

بينما نحن &#39؛إعادة المقارنة - HS256 مقابل RS256 في لمحة واحدة:

HS256 RS256
النموذج الرئيسي واحدة مشتركة العلامات السرية و يتحقق علامات المفاتيح الخاصة، والتحقق من المفتاح العام
من يستطيع سك الرموز أي شخص يحمل السر فقط حامل المفتاح الخاص
الأنسب خدمة واحدة، المصدر = المدقق الخدمات الصغيرة، ومعرفو الطرف الثالث، وJWKS
حجم التوقيع/السرعة أصغر وأسرع أكبر وأبطأ وأكثر أمانًا للتوزيع

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

هل من الآمن لصق JWT في وحدة فك التشفير عبر الإنترنت؟

فقط إذا كان جهاز فك التشفير يعمل من جانب العميل. الرمز المميز الحقيقي هو بيانات اعتماد مباشرة - إرساله إلى شخص ما &#39؛ يقوم الخادم بزراعة مفتاح عمل في سجلاته. يقوم برنامج فك ترميز Toolz.dev JWT بكل عمليات فك التشفير في متصفحك ولا ينقل شيئًا؛ يمكنك تأكيد ذلك بنفسك من خلال مشاهدة علامة تبويب الشبكة أثناء اللصق. بالنسبة لأجهزة فك التشفير، يمكنك &#39؛ التحقق من الرموز المميزة منتهية الصلاحية أو استخدامها أو اختبارها فقط.

هل يمكنك فك تشفير JWT بدون السر؟

نعم - هذا &#39؛ النقطة التي يفتقدها الناس أكثر من غيرها. الرأس والحمولة هما JSON المشفر بـ base64url، والتشفير ليس تشفيرًا. يمكن لأي شخص قراءة كل مطالبة دون أي مفتاح. السر (أو المفتاح الخاص) مطلوب فقط لإنشاء التوقيع أو التحقق منه. فك التشفير لا يتطلب شيئا؛ الثقة تتطلب التحقق.

ماذا &#39؛s الفرق بين فك التشفير والتحقق من JWT؟

يقرأ فك التشفير المحتويات: مقسمة على نقاط، وفك تشفير base64url، وتحليل JSON. التحقق يثبت الأصالة: إعادة حساب التوقيع أو التحقق منه باستخدام المفتاح السري أو العام، وتأكيد الخوارزمية، والتحقق من انتهاء الصلاحية. يوضح لك جهاز فك التشفير ما يدعيه الرمز المميز؛ فقط التحقق، الذي يتم إجراؤه من جانب الخادم باستخدام المفتاح، يخبرك بما إذا كان يجب تصديقه. لا تسمح أبدًا بناءً على المطالبات التي تم فك تشفيرها ولكن لم يتم التحقق منها.

لماذا يظهر JWT الخاص بي على أنه غير صالح أو منتهي الصلاحية؟

في أغلب الأحيان exp لقد مر بالفعل - قم بفك تشفيره وتحقق من التاريخ. المشتبه بهم التاليون: رمز مميز مقطوع من نسخة ولصق قذرة، و aud أو iss هذا لا يتطابق مع تكوين المدقق &#39؛t، أو انحراف الساعة بين الخوادم، أو التوقيع من مفتاح تم تدويره. إذا تم فك التشفير exp يبدو جيدًا ولكن الكود الخاص بك يرفض الرمز المميز، تحقق مما إذا كنت &#39؛ إعادة مقارنة الثواني بالمللي ثانية.

هل JWTs مشفرة؟

يتم توقيع JWTs القياسية - من الناحية الفنية JWS، وفقًا لـ RFC 7515 - وليست مشفرة. يكتشف التوقيع التلاعب ولكنه لا يخفي شيئًا؛ الحمولة قابلة للقراءة من قبل أي شخص. يوجد متغير مشفر (JWE) ولكنه نادر في مصادقة الويب النموذجية. القاعدة العملية: تعامل مع كل حمولة JWT على أنها عامة، ولا تضع أبدًا كلمات مرور أو مفاتيح API أو بيانات حساسة في واحدة.

ما هو التنسيق الذي تتم به المطالبة exp؟

exp هو تاريخ رقمي: ثوانٍ منذ عصر يونكس (1 يناير 1970 بالتوقيت العالمي)، كما هو محدد في RFC 7519. نفس الشيء بالنسبة لـ iat و nbf. الخطأ الكلاسيكي يستخدم JavaScript&#39؛s Date.now()، والذي يُرجع المللي ثانية - مما ينتج عنه رموز مميزة تبدو إما منتهية الصلاحية على الفور أو تحمل تواريخ انتهاء الصلاحية حوالي عام 56000. إذا أظهر الطابع الزمني الذي تم فك تشفيره سنة مكونة من خمسة أرقام، فهذا &#39؛ هذا هو الخطأ الخاص بك.

ما هو هجوم alg لا شيء؟

يسمح RFC 7519 بـ JWTs غير الآمنة "alg": "none" وتوقيع فارغ. وثقت المكتبات القديمة في حقل خوارزمية الرأس &#39؛s، لذلك قام المهاجمون بتجريد التوقيعات وتعيينها alg إلى none، واجتاز التحقق مع المطالبات المزورة. يتطلب RFC 8725، أفضل الممارسات الحالية لـ JWT، من المدققين تثبيت قائمة السماح الصريحة للخوارزميات في التعليمات البرمجية وتجاهل كل ما يطلبه الرمز المميز.

هل يجب أن أستخدم HS256 أو RS256؟

يستخدم HS256 سرًا مشتركًا واحدًا للتوقيع والتحقق - بسيط وسريع، وهو مناسب لخدمة واحدة تقوم بإصدار الرموز المميزة الخاصة بها والتحقق منها. يوقع RS256 بمفتاح خاص ويتحقق بمفتاح عام، لذلك يمكن للعديد من الخدمات التحقق دون القدرة على تزوير. القاعدة الأساسية: متراصة، HS256؛ الخدمات الصغيرة أو مزود هوية الطرف الثالث، RS256.

إلتحاق بالركب

لقد بنيت JWT فك التشفير لأنني ظللت بحاجة إليها أثناء إنشاء Toolz.dev نفسها - نفس رموز الوصول لمدة 15 دقيقة ورموز التحديث لمدة 7 أيام I&#39؛ لقد تم تشريحها في هذا الدليل. يقوم بفك التشفير على الفور، ويترجم الطوابع الزمنية التي تسبب 90% من الارتباك، ولا يرسل الرمز المميز الخاص بك أبدًا إلى أي مكان. هذا الجزء الأخير هو &#39؛ خانة اختيار الميزات؛ للأداة التي تتعامل مع بيانات الاعتماد المباشرة، فهو &#39؛ التصميم بأكمله.

إذا كانت الرموز المميزة جزءًا من تصحيح الأخطاء اليومي، فسيحصل الجيران على رصيدهم أيضًا محول الطابع الزمني لعلم آثار العصر، محول BASE64 للوخز في الأجزاء الخام، و تنسيق JSON للمطالبة النقط، و مولد هاش عندما تعمل أنت و#39؛ مع الملخصات. لسير العمل الأوسع، بلدي دليل أدوات تصحيح أخطاء API يغطي المكان الذي يتناسب فيه جهاز فك التشفير مع الحلقة.

واحتفظ بنسخة الجملة الواحدة مسجلة على شاشتك: فك التشفير يخبرك بما يقوله الرمز المميز، والتحقق يخبرك بما إذا كنت ستصدق ذلك. إرباك الاثنين وأنت &#39؛ سأشحن نوع الخطأ الذي ينتهي به الأمر كحكاية افتتاحية في منشور مدونة شخص ما &#39؛s. هذه المرة كان لي.

Frequently Asked Questions

Only if the decoder runs client-side. A real token is a live credential — sending it to someone's server plants a working key in their logs. The toolz.dev JWT Decoder does all decoding in your browser and transmits nothing; you can confirm this yourself by watching the Network tab while you paste. For decoders you can't verify, use expired or test tokens only.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!