هل يمكنك تعيين ملف تعريف الارتباط أو حذفه بشكل موثوق أثناء المعالجة من جانب الخادم لمكالمة Ajax (XHR)؟

StackOverflow https://stackoverflow.com/questions/89579

سؤال

لقد قمت ببعض الاختبارات على هذا بنفسي (أثناء المعالجة من جانب الخادم لمعالج طلب DWR Framework Ajax على وجه الدقة) ويبدو أنه يمكنك التعامل مع ملفات تعريف الارتباط بنجاح، ولكن هذا يتعارض مع الكثير مما قرأته عن أفضل ممارسات Ajax و كيف تفسر المتصفحات الاستجابة من XmlHttpRequest.ملاحظة لقد اختبرت على:

  • آي إي 6 و 7
  • فايرفوكس 2 و 3
  • سفاري

وفي جميع الحالات، تم تفسير عمليات ملفات تعريف الارتباط القياسية على كائن HttpServletResponse أثناء معالجة طلب Ajax بشكل صحيح بواسطة المتصفح، ولكن أود معرفة ما إذا كان من الأفضل دفع معالجة ملفات تعريف الارتباط إلى جانب العميل، أو ما إذا كان هذا الخادم (الأنظف كثيرًا) يمكن الوثوق في التعامل مع ملفات تعريف الارتباط الجانبية.

سأرحب بإجابات خاصة بإطار عمل DWR وAjax بشكل عام.

هل كانت مفيدة؟

المحلول

يستخدم XMLHttpRequest دائمًا إطار عمل اتصال متصفح الويب.يعد هذا أحد متطلبات برامج AJAX للعمل بشكل صحيح حيث سيتم تسجيل خروج المستخدم إذا كان كائن XHR يفتقر إلى الوصول إلى مجموعة ملفات تعريف الارتباط الخاصة بالمتصفح.

من الممكن نظريًا لمتصفح الويب أن يقوم ببساطة بمشاركة ملفات تعريف الارتباط للجلسة دون استخدام إطار اتصال المتصفح، ولكن هذا لم يحدث أبدًا (على حد علمي) من الناحية العملية.حتى البرنامج المساعد Flash يستخدم اتصالات متصفح الويب.

وبالتالي فإن النتيجة النهائية هي أنه من الآمن التعامل مع ملفات تعريف الارتباط عبر AJAX.فقط تذكر أن مكالمة AJAX قد لا تحدث أبدًا.إنها ليست أحداثًا مضمونة، فلا تعتمد عليها.

نصائح أخرى

في سياق DWR قد لا يكون الأمر "آمنًا".

من القراءة موقع DWR انها تقول:

من المهم أن تتعامل مع طلب HTTP والاستجابة للقراءة فقط.على الرغم من أن رؤوس HTTP قد تمر بشكل جيد، إلا أن هناك احتمالًا كبيرًا أن تتجاهلها بعض المتصفحات.

لقد فهمت أن هذا يعني أن تعيين ملفات تعريف الارتباط أو سمات الطلب أمر محظور.
لنقول ذلك، لدي رمز يقوم بتعيين سمات الطلب (الكود الذي كتبته قبل أن أقرأ تلك الصفحة) ويبدو أنه يعمل بشكل جيد (بصرف النظر عن حذف ملفات تعريف الارتباط التي ذكرتها في تعليقي أعلاه).

يعد التعامل مع ملفات تعريف الارتباط من جانب العميل عكس "أفضل الممارسات".ولا ينبغي أن يكون ضروريًا أيضًا.لم يتم تقديم ملفات تعريف الارتباط HttpOnly من أجل لا شيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top