SameSite = Lax افتراضيًا - بالفعل في Chrome 80 مستقر (وإن لم يكن متاحًا للجميع بعد)

في اليوم الآخر ، أبلغ زميل متيقظ (شكرا لك ، لينا) عن خطأ غريب - يقوم الخادم عادة بتعيين ملف تعريف الارتباط في المتصفح ، لكنه لم يصل مرة أخرى. كل شيء يعمل في اليوم السابق ، ولكن الآن تم تعيين ملف تعريف الارتباط ، ولكن بعد بضع ثوان اختفى بطريقة سحرية (على الرغم من أنه يجب أن يستمر لمدة 24 ساعة). تم استنساخه فقط من قبل عدد قليل من الأشخاص في الفريق وفقط في Chrome 80 الجديد ، لكن البقية في Chrome كان لديهم نفس الإصدار بالضبط ، كل شيء كان في محله. في المتصفحات الأخرى ، عمل كل شيء مثل الساعة. صوفي. بدأوا في اكتشاف ذلك ، وبعد مرور بعض الوقت ، لاحظت وحدة تحكم Chrome تحذيرًا لرأس الاستجابة لإعداد ملف تعريف الارتباط:
A cookie associated with a cross-site resource at _your_domain_ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.

بدأوا في دراسة ما هو عليه ، وأصبح من الواضح تدريجيًا كيف نشأ الخطأ ولماذا لم يظهره الجميع. نظرًا لأن خدمتنا يجب أن تعالج الطلبات من المجالات المختلفة ، فهذه SameSiteهي حالتنا فقط. وأضافوا SameSite=None; Secure، وتم حل المشكلة بالنسبة لنا.

لماذا هذا؟


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

في عام 2016 ، تم تقديم سمة SameSiteتتيح لك التحكم في ما إذا كان المتصفح سيرسل ملفات تعريف الارتباط إذا أرسلت الصفحة طلبًا إلى نطاق آخر. لدى المطورين الفرصة لمنع نقل ملفات تعريف الارتباط الخاصة بهم ، إذا تم تنفيذ الطلب من موقع طرف ثالث. لهذا ، يجب تعيين السمة SameSiteبشكل واضح على Strict.(يتم نقل ملفات تعريف الارتباط فقط عند الطلبات والانتقالات من المجال الذي تنتمي إليه) ، أو Lax (يتم نقل ملفات تعريف الارتباط عند الانتقال إلى الموقع من مواقع أخرى عن طريق رابط مباشر ، ولكن لا يتم نقلها بناء على طلبات أخرى منها ، على سبيل المثال ، عند طلب AJAX أو تحميل الصور ) كان الغياب SameSiteمعادلاً SameSite=None، أي بشكل افتراضي ، كانت ملفات تعريف الارتباط لا تزال تُرسل على أي طلب.

في مايو 2019 ، أعلن مطورو Google Chrome أنهم سيغيرون هذا السلوك تدريجيًا ويفسرون غياب SameSite SameSite=Lax(المزيد هنا) وهذا يعني - افتراضيًا ، سيحظر المتصفح إرسال ملفات تعريف الارتباط للطلبات من الصفحة الحالية إلى أي موارد أخرى ، باستثناء النقرات المباشرة على الرابط. أعلن مطورو Firefox و Edge أنه بمرور الوقت ، سيطبقون هذا التغيير أيضًا في متصفحاتهم.

بالنسبة للمستخدمين ، يعد سلوك المستعرض هذا أكثر أمانًا. يحتاج مطورو المواقع وخدمات الويب إلى مراعاة أنه إذا كانوا لا يزالون بحاجة إلى تلقي ملفات تعريف الارتباط عند الطلب من مواقع أخرى ، فسيتعين عليهم تعيين سمات ملفات تعريف الارتباط الخاصة بهم بشكل صريح SameSite=None, Secure( Secure- لأن هذا الطلب ، بالإضافة إلى ذلك ، يجب أن يأتي فقط إلى الخادم عبر قناة آمنة )

نظرًا لأن الابتكار يغير المعيار الحالي ، ولن تتمكن جميع المواقع من التكيف بسرعة ، فإن الانتقال إلى سلوك جديد يحدث تدريجيًا. في البداية ، تم تشغيله لعدد محدود من مستخدمي Chrome التجريبي ، والآن يزداد عددهم تدريجيًا. المعلومات الفعلية متاحة هنا . آخر إدخال على الرابط:
التحديث الأخير في 9 آذار (مارس) 2020.

لقد بدأنا في فرض السلوك الجديد على Chrome 80 المستقر ، وليس فقط لـ 100٪ من المستخدمين. يكون الطرح الخاضع للتحكم لعدد محدود من السكان ،
أي أن فترة الاختبار التجريبي متأخرة ، وبدأ مطورو Chrome في تضمين وظائف جديدة ببطء بين المستخدمين العاديين. وهو أمر جيد من حيث المبدأ ، لأنه أكثر أمانًا حقًا.

يمكنك استعادة السلوك القديم من خلال الإعدادات : في شريط عناوين Chrome ، أدخل chrome://flags، وانتقل إلى الصفحة ، واعثر على SameSite ليكون عنصر ملفات تعريف الارتباط الافتراضي ، واضبطه على " معطل" . ولكن هذا أكثر ملاءمة للاختبار من المستخدمين العاديين. وبالمثل ، إذا كان جهاز Chrome 80 لا يزال يعمل بالسلوك القديم ، فيمكنك فرض الوظيفة الجديدة عن طريق تعيين نفس الإعداد على ممكّن .

لذلك ، إذا كان موقعك يحتاج إلى تلقي ملفات تعريف الارتباط عند الطلب من نطاقات مختلفة - فكن مستعدًا للتغييرات القادمة (ومن يكون جاهزًا لذلك). جيد للجميع!

أضيفت بواسطة:
xdenserكما هو موضح في التعليقات أن بعض الإصدارات القديمة من المستعرضات لا تدعم SameSite=None، ولا تقبل ملفات تعريف الارتباط هذه على الإطلاق أو معالجتها بطريقة غير قياسية. من بينها متصفحات لأجهزة الكمبيوتر المكتبية والأجهزة المحمولة. توفر الصفحة https://www.chromium.org/updates/same-site/incomp Compatible-clients قائمة بالمتصفحات والحل المحتمل للمشكلة (في رمز زائف ، ولكنها مفصلة تمامًا). يقترح المؤلفون الكشف عن الإصدارات المتعثرة من المتصفحات حسب العنوان useragent، وعدم تعيين سمة ملفات تعريف الارتباط الخاصة بهم SameSite=Noneعلى الإطلاق.

تمت إضافة 2:
فيما يتعلق بالحالة مع COVID-19 ، اعتبارًا من 3 أبريل 2020 ، علقت Google مؤقتًا تنفيذ التغييرات الموضحة في معالجة SameSite ، لضمان التشغيل السلس لخدمات الإنترنت. على الأجهزة التي تم فيها تطبيق التغييرات بالفعل ، سيتم إلغاؤها.
(ج) blog.chromium.org/2020/04/temporarily-rolling-back-samesite.html

المصادر:
web.dev/samesite-cookies-explain
www.chromium.org/updates/same-site
www.chromestatus.com/ feature / 5088147346030592
www.chromium.org/updates/same-site/incomp
Compatible-clients blog.chromium.org/2020/04/temporarily-rolling-back-samesite.html

All Articles