تقييم الدرس 18
التحقق من رموز JWT
أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس
أسئلة التقييم
تقييم الدرس 18: التحقق من رموز JWT. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) أي فحص ليس جزءًا من التحقق الكامل من
JWT؟2) ماذا يرد هذا الخادم على رمز
alg=none مزوّر؟const express = require('express');const app = express();app.use(express.json());app.use(express.urlencoded({ extended: false })); const jwt = require('jsonwebtoken');const SECRET = 'my-secret'; app.get('/issue', (req, res) => res.json({ token: jwt.sign({ sub: 'u1', role: 'user' }, SECRET, { algorithm: 'HS256', expiresIn: '1h', issuer: 'rafee', audience: 'app', noTimestamp: true }) })); app.post('/check', (req, res) => { try { // تحقق كامل: الخوارزمية والمُصدِر والجمهور مثبّتة const claims = jwt.verify(req.body.token, SECRET, { algorithms: ['HS256'], issuer: 'rafee', audience: 'app' }); res.json({ sub: claims.sub, role: claims.role }); } catch (e) { res.status(401).json({ error: 'رمز غير صالح: ' + e.message }); }}); app.listen(3000);
3) ثغرة
alg=none تُمنع بـ:4) خلط الخوارزميات يستغل:
5) أأمن تخزين لرمز الجلسة:
2السؤال الثاني: صح أم خطأ
1) يكفي التحقق من التوقيع دون
exp و iss و aud.الصواب: خطأ
2) المتحقق يجب أن يحدد الخوارزمية لا أن يأخذها من الرمز.
الصواب: صح
3) رمز
alg=none بلا توقيع يجب أن يُرفض.الصواب: صح
4)
localStorage آمن لتخزين الرموز الحسّاسة.الصواب: خطأ
5) تقصير عمر رمز الوصول يحدّ أثر سرقته.
الصواب: صح
3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة
1) لمنع
alg=none نمرّر إلى verify خيار .الإجابة: algorithms
2) المطالبة التي تحدد وقت انتهاء الرمز هي .
الإجابة: exp
3) الكوكي الذي لا يصله جافاسكربت هو .
الإجابة: httpOnly
4السؤال الرابع: أسئلة عملية
1) تمرير
{ algorithms: ['HS256'] } إلى verify يمنع قبول alg=none.الصواب: صح
2) فحص
aud يمنع قبول رمز صدر لتطبيق آخر.الصواب: صح
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».