اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

هل المكتبة تقوم بمقارنة التوكن القادم من المستخدم بالذي تم ارساله له ؟

ام يجب علي حفظ التوكن المنشئ في كل مره ومقارنته بنفسي ؟

علماً اني استخدمها في spa

وكيف يمكن تغيير خيارات الكوكيز في المكتبة بحيث اعدل key او httponly وغيرها.

 

Recommended Posts

  • 1
نشر
  • تقوم المكتبة بإنشاء وإرسال التوكن للزبون وعند إرسال الزبون لطلب يجب ان يحتوي على التوكن المرسلة من المخدم، وتقوم المكتبة بالتحقق منها هل هي مولدة من مخدمك أم لا (دون الحاجة لتخزين واسترداد أي توكن)
  • بما انك تستخدم SPA يمكنك ارسال اتوكن مع ال Cookie للمتصفح عندما يطلب الموقع، وبذلك سيقوم المتصفح بارسال كل ال Cookie التي استلمها مع كل طلب يقوم به تلقائيا بدون الحاجة لأن تبرمج ذلك يدويا كالتالي 
app.all('*', function (req, res) {
  res.cookie('XSRF-TOKEN', req.csrfToken()) // تعيين التوكن في الـ Cookie
  
  ... // نقوم الآن بإرسال ملفات الموقع 
})

 

  • يمكنك تعديل خصائص ال Cookie بتمرير غرض عوضًا عن true كالتالي
csrf({
  cookie: {
    key: '...', //اسم ال Cookie
    httpOnly: true, // تفعيل httpOnly
  }
})

 

  • 0
نشر
بتاريخ 11 ساعات قال Hassan Hedr:

وتقوم المكتبة بالتحقق منها هل هي مولدة من مخدمك أم لا (دون الحاجة لتخزين واسترداد أي توكن)

كيف يتم هذا التحقق من قبل المكتبة ؟

بتاريخ 11 ساعات قال Hassan Hedr:

res.cookie('XSRF-TOKEN', req.csrfToken()) // تعيين التوكن في الـ Cookie

عند ارسال التوكن بهذه الطريقة يكون في الكوكيز رمزان، هذا الذي ارسلته وررمز اخر باسم _csrf لا تتغير قيمته نهائياً !!!

لماذا الرمز الثاني ؟

  • 1
نشر (معدل)
بتاريخ 9 ساعات قال مضحي Modhy:

كيف يتم هذا التحقق من قبل المكتبة ؟

تستخدم المكتبة داخليا مكتبة csrf وهي تتولى عملية توليد التوكن والتحقق منها باستخدام ال Hashing

بتاريخ 9 ساعات قال مضحي Modhy:

عند ارسال التوكن بهذه الطريقة يكون في الكوكيز رمزان

إذا كنت تستخدم Angular فهو سيتعرف تلقائيا على ال Cookie بالاسم "XSRF-TOKEN" ويقوم بارسالها مع كل طلب لاحق عند توليد الطلبات (يمكنك تجاهل هذه الطريقة إذا كنت تستخدم منصة أو مكتبة أخرى)

بتاريخ 9 ساعات قال مضحي Modhy:

وررمز اخر باسم _csrf لا تتغير قيمته نهائياً

هذا هو الرمز الافتراضي التي ترسله المكتبة وفيه التوكن المولدة يمكنك كما أشرت سابقًا تغيير اسم هذا الرمز اذا أردت عن طريق 

csrf({
  cookie: {
    key: '...', // اسم الرمز الافتراضي
  }
})

 

تم التعديل في بواسطة Hassan Hedr

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...