Bassel Jhr نشر 9 أغسطس 2021 أرسل تقرير نشر 9 أغسطس 2021 لقد حاولت إضافة ملفات تعريف الارتباط في إطار العمل express كما موجود في التوثيق من خلال: app.use(express.cookieParser('secretKey')); وأيضاً حاولت التالي: res.cookie('cookieKey', 'cookieValue', {signed: true}) ولكن لم ألاحظ أي فرق من طرف المستخدم فما زالت ملفات تعريف الارتباط تظهر دون تشفير، فما هو الفرق الحقيقي مع إضافة signed: true إلى ملفات تعريف الارتباط ؟ 1 اقتباس
0 Sam Ahw نشر 9 أغسطس 2021 أرسل تقرير نشر 9 أغسطس 2021 ملفات تعريف الارتباط الموقّعة أو (signed) ستبقى تظهر في طرف المستخدم، إلا أنها ستكون مرفقة بتوقيع لاكتشاف في حال حاول المستخدم التعديل عليها. حيث يتم إنشاء توقيع باستخدام HMAC لقيمة ملفات تعريف الارتباط cookie value الحالية وترميزها من خلال base64 وعندما يتم قرائتها يتم قراءة هذا التوقيع وحساب التوقيع الذي تم إنشائه لهذه القيمة في حال كانا غير متطابقين أي يوجد تعديلات على قيمتها يتم إعادة خطأ. أما في حال كنت ترغب بإخفاء محتوى ملفات تعريف الارتباط فيجب عليك إما تشفير محتوياتها أو تخزينها من طرف الخادم بدلاً من طرف المستخدم، ويوجد بعض الحزم والآليات التي يمكنك اتباعها لتحقيق ذلك في express.js مثل cookie-session الموجودة ضمن التوثيق الرسمي في إطار العمل express، حيث يمكنك تحميلها بالشكل التالي: npm install cookie-session ومثال عن استخدامها من التوثيق الرسمي: var cookieSession = require('cookie-session') var express = require('express') var app = express() app.use(cookieSession({ name: 'session', keys: [/* secret keys */], maxAge: 24 * 60 * 60 * 1000 })) لإنشاء ملفات تعريف الارتباط التي يتم ارفاقها مع التوقيع signed: res.cookie('key', 'value', {signed: true}) ويتم الحصول عليها وقرائتها من خلال الغرض sigendCookie الموجود ضمن الطلب req: req.signedCookies['key'] 1 اقتباس
0 عبدالباسط ابراهيم نشر 9 أغسطس 2021 أرسل تقرير نشر 9 أغسطس 2021 كما تم التوضيح في التعليق السابق أنه sign لا تعني أن ال cookies ستكون مخفية ولكن سيتم إضافة توقيع إليها وهناك بعض الفروقات بين cookie و signed cookie لا يمكننا تحديد ما إذا كانت البيانات التي يتم إعادتها يتم تعديلها من قبل العميل أم لا. ذلك في حالة ال cookie بينما العكس في ال signed cookie يمكننا تحديد ما إذا كانت البيانات التي يتم إعادتها يتم تعديلها من قبل العميل أم لا ويضاف التوقيع كجزء من ال sigendCookie إلى جانب بيانات sigendCookie الفعلية وهذا التوقيع معروف من ناحية السيرفر فقط اقتباس
السؤال
Bassel Jhr
لقد حاولت إضافة ملفات تعريف الارتباط في إطار العمل express كما موجود في التوثيق من خلال:
app.use(express.cookieParser('secretKey'));
وأيضاً حاولت التالي:
res.cookie('cookieKey', 'cookieValue', {signed: true})
ولكن لم ألاحظ أي فرق من طرف المستخدم فما زالت ملفات تعريف الارتباط تظهر دون تشفير، فما هو الفرق الحقيقي مع إضافة signed: true إلى ملفات تعريف الارتباط ؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.