غالبًا ما تهدف هجمات البرمجة النصية عبر المواقع (XSS) إلى سرقة ملفات تعريف ارتباط الجلسة. في مثل هذا الهجوم ، يتم الوصول إلى قيمة ملف تعريف الارتباط بواسطة برنامج نصي من جانب العميل باستخدام JavaScript (document.cookie). ومع ذلك ، في الاستخدام اليومي ، نادرًا ما تحتاج تطبيقات الويب إلى الوصول إلى ملفات تعريف الارتباط عبر JavaScript. لذلك ، تم وضع طريقة لحماية ملفات تعريف الارتباط من هذه السرقة: علامة تخبر متصفح الويب أنه لا يمكن الوصول إلى ملف تعريف الارتباط إلا من خلال HTTP – HttpOnly علم.
ال HttpOnly العلم ليس جديدا. تم تطبيقه لأول مرة في Microsoft Internet Explorer 6 SP1 في عام 2002 للحماية من سرقة المعلومات الحساسة. حاليًا ، يدعم كل متصفح رئيسي HttpOnly بسكويت. قد تتجاهل بعض متصفحات الجوال المتخصصة فقط هذه العلامة – راجع القائمة الكاملة للمتصفحات المدعومة في هل يمكنني استخدام موقع.
المحتويات
كيف يعمل HttpOnly؟
ال HttpOnly السمة هي سمة اختيارية لملف تعيين ملف تعريف الارتباط رأس استجابة HTTP الذي يتم إرساله بواسطة خادم الويب مع صفحة الويب إلى متصفح الويب في استجابة HTTP. فيما يلي مثال على تعيين ملف تعريف ارتباط الجلسة باستخدام ملف تعيين ملف تعريف الارتباط رأس:
HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: sessionid=QmFieWxvbiA1
ملف تعريف ارتباط الجلسة أعلاه غير محمي ويمكن سرقته في هجوم XSS. ومع ذلك ، إذا تم تعيين ملف تعريف ارتباط الجلسة على النحو التالي ، فسيتم حمايته من الوصول إليه باستخدام JavaScript:
Set-Cookie: sessionid=QmFieWxvbiA1; HttpOnly
كيفية تعيين HttpOnly من جانب الخادم؟
تدعم جميع اللغات والبيئات الخلفية الحديثة إعداد ملف HttpOnly علم. فيما يلي مثال لكيفية القيام بذلك في PHP باستخدام امتداد setcookie وظيفة:
setcookie("sessionid", "QmFieWxvbiA1", ['httponly' => true]);
آخر قيمة (صحيح) يمثل وضع HttpOnly ينسب.
أعلام أخرى لملفات تعريف الارتباط الآمنة
ال HttpOnly العلم ليس العلم الوحيد الذي يمكنك استخدامه لحماية ملفات تعريف الارتباط الخاصة بك. فيما يلي نوعان آخران يمكن أن يكونا مفيدان.
العلم الآمن
ال آمن تُستخدم العلامة للإعلان عن إمكانية إرسال ملف تعريف الارتباط فقط باستخدام اتصال آمن (SSL / HTTPS). إذا تم تعيين ملف تعريف الارتباط هذا ، فلن يرسل المتصفح ملف تعريف الارتباط أبدًا إذا كان الاتصال HTTP. تمنع هذه العلامة سرقة ملفات تعريف الارتباط عبر هجمات man-in-the-middle.
لاحظ أنه لا يمكن تعيين هذه العلامة إلا أثناء اتصال HTTPS. إذا تم تعيينه أثناء اتصال HTTP ، فسيتجاهله المستعرض.
مثال:
Set-Cookie: sessionid=QmFieWxvbiA1; HttpOnly; Secure
مثال على تعيين ملف تعريف الارتباط أعلاه في PHP:
setcookie("sessionid", "QmFieWxvbiA1", ['httponly' => true, 'secure' => true]);
علم SameSite
ال نفس الموقع تُستخدم العلامة للإعلان عن الوقت الذي يجب أن ترسل فيه متصفحات الويب ملف تعريف الارتباط ، اعتمادًا على كيفية تفاعل الزائر مع الموقع الذي قام بتعيين ملف تعريف الارتباط. تُستخدم هذه العلامة للمساعدة في الحماية من هجمات التزوير عبر المواقع (CSRF).
ال نفس الموقع قد تحتوي السمة على إحدى القيم التالية:
- SameSite=Strict: يتم إرسال ملف تعريف الارتباط فقط إذا كنت حاليًا على الموقع الذي تم تعيين ملف تعريف الارتباط له. إذا كنت على موقع مختلف وقمت بالنقر فوق ارتباط إلى موقع تم تعيين ملف تعريف الارتباط له ، فسيكون ملف تعريف الارتباط ليس أرسلت مع الطلب الأول.
- SameSite=Lax: ملف تعريف الارتباط هو ليس تم إرسالها للمحتوى المضمّن ولكنه يكون يتم إرسالها إذا قمت بالنقر فوق ارتباط إلى موقع تم تعيين ملف تعريف الارتباط له. يتم إرسالها فقط مع أنواع الطلبات الآمنة التي لا تغير الحالة ، على سبيل المثال ، GET.
- SameSite=None: يتم إرسال ملف تعريف الارتباط حتى للمحتوى المضمّن.
تتصرف المتصفحات المختلفة بشكل مختلف افتراضيًا عندما يكون ملف نفس الموقع لم يتم تعيين السمة. على سبيل المثال ، في عام 2019 ، غيّر متصفح Google Chrome سلوكه الافتراضي لـ نفس الموقع بسكويت.
مثال:
Set-Cookie: sessionid=QmFieWxvbiA1; HttpOnly; Secure; SameSite=Strict
مثال على تعيين ملف تعريف الارتباط أعلاه في PHP:
setcookie("sessionid", "QmFieWxvbiA1", ['httponly' => true, 'secure' => true, 'samesite'=>'Strict']);
هل علامات ملفات تعريف الارتباط كافية ضد XSS؟
على الرغم من أن علامات ملفات تعريف الارتباط فعالة للعديد من الهجمات ، إلا أنه لا يمكن استخدامها كعلاج للبرمجة النصية عبر المواقع. قد يبتكر المهاجمون طرقًا للتحايل على القيود. على سبيل المثال ، قم بتنفيذ هجمات التتبع عبر المواقع (CST) ، وقم بسرقة حتى ملفات تعريف الارتباط المحمية بعلامات مثل HttpOnly.
الطريقة الوحيدة الفعالة للحماية من البرمجة النصية عبر المواقع هي العثور على مثل هذه الثغرات الأمنية في التطبيق والقضاء عليها في المصدر. والطريقة الفعالة الوحيدة للعثور على مثل هذه الثغرات الأمنية هي عن طريق إجراء اختبار الاختراق اليدوي و / أو استخدام الماسح الآلي للثغرات الأمنية.
احصل على أحدث محتوى حول أمان الويب
في بريدك الوارد كل أسبوع.