ما ترويسات الأمان وكيف تحمي موقعك؟

الكاتب: تاريخ النشر

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

كيف تعمل ترويسات الأمان

عندما يجلب المتصفح صفحة، يرسل الخادم محتواها مع بيانات وصفية، أي معلومات تصف الاستجابة. وتُعد ترويسات HTTP جزءاً من هذه البيانات. لا تظهر في نص الصفحة، لكن يمكن للمتصفح الاستناد إليها لتقييد كيفية استخدام الموارد التي يتلقاها.

يمكن لترويسات الأمان أن تُلزم المتصفح باستخدام اتصال مشفر، أو تحدد المصادر المسموح بها للبرامج النصية، أو تمنع تضمين الصفحة داخل إطار في موقع آخر. وعادةً ما تُضبط في إعدادات الخادم أو التطبيق أو الوكيل العكسي أو شبكة توصيل المحتوى CDN، وهي بنية تحتية تتوسط عملية توصيل المحتوى.

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

أهم ترويسات الأمان واستخداماتها

لا توجد مجموعة إعدادات واحدة تناسب جميع المواقع. تعالج الترويسات التالية تهديدات مختلفة، ويجب تكييفها مع طريقة عمل الموقع.

الترويسةوظيفتهاما ينبغي الانتباه إليه
Content-Security-Policyتحدد، من بين أمور أخرى، المصادر المسموح بها للبرامج النصية والأنماط والموارد الأخرى.قد تؤدي السياسة شديدة التقييد إلى تعطيل نموذج أو المدفوعات أو التحليلات.
Strict-Transport-Securityتُلزم المتصفح باستخدام HTTPS طوال مدة محددة.تتطلب المدة الطويلة وشمول النطاقات الفرعية تجهيز البنية التحتية بأكملها.
X-Content-Type-Optionsعند ضبطها على القيمة nosniff، تحدّ من تخمين نوع المورد على نحو يخالف النوع الذي يعلنه الخادم.يجب أن يرسل الخادم قيمة Content-Type الصحيحة، مثلاً للبرامج النصية وأوراق الأنماط.
Referrer-Policyتتحكم في معلومات عنوان الصفحة التي تُرسل في ترويسة Referer.ينبغي أن يراعي الإعداد الخصوصية ومتطلبات التكامل مع الخدمات الأخرى.
Permissions-Policyتقيّد الوصول إلى وظائف محددة في المتصفح، مثل الكاميرا أو تحديد الموقع الجغرافي.يختلف دعم كل توجيه باختلاف المتصفح.
X-Frame-Optionsتقيّد تضمين الصفحة داخل الإطارات.إمكاناتها أقل مرونة من التوجيه frame-ancestors في CSP.

تساعد CSP، أي Content Security Policy أو سياسة أمان المحتوى، على الحد من آثار XSS، وهي هجمات تُشغّل شيفرة غير مرغوب فيها ضمن سياق الصفحة. ولا تكفي قائمة النطاقات الموثوقة وحدها لتوفير حماية كاملة؛ إذ تتوقف الحماية أيضاً على التوجيهات المحددة، وكيفية تحميل البرامج النصية، وتجنّب الاستثناءات الواسعة أكثر من اللازم.

يوفر التوجيه frame-ancestors في CSP، من بين وسائل أخرى، حماية من اختطاف النقرات، أي خداع المستخدم للنقر على عنصر في صفحة مخفية داخل موقع آخر. ويمكنه منع تضمين الصفحة تماماً، أو السماح بذلك لمواقع محددة فقط.

مثال: صفحة تضم نموذجاً وخدمات خارجية

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

إذا كان ينبغي منع تضمين الموقع داخل أي إطار، فقد يبدو الجزء المعني من السياسة كما يلي:

Content-Security-Policy: frame-ancestors 'none'

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

أما الصفحة التي لا تحتاج إلى الكاميرا أو الميكروفون، فيمكن النظر في استخدام:

Permissions-Policy: camera=(), microphone=()

لا ينبغي نسخ هذا الإعداد إلى تطبيق يُستخدم لإجراء مكالمات الفيديو. فترويسة الأمان الجيدة تقيّد الإمكانات غير الضرورية، لا الوظائف التي يحتاج إليها المستخدم.

كيفية فحص الترويسات وتطبيقها بأمان

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

خطوات عملية للتطبيق:

  1. افحص عناوين تمثل أجزاء الموقع المختلفة: الصفحة الرئيسية، وتسجيل الدخول، والنماذج، وصفحات الأخطاء. فقد تمر استجاباتها عبر طبقات مختلفة من البنية التحتية.
  2. حدد الموضع الذي تُدار فيه الترويسات. ينبغي ألا يستبدل التطبيق والخادم وCDN إعدادات بعضهم بعضاً دون قصد، أو يضيفوا قواعد متعارضة.
  3. جهّز CSP في وضع Content-Security-Policy-Report-Only. يتيح هذا الوضع مراقبة المخالفات دون حظر الموارد، لكن جمع التقارير يتطلب إعداداً إضافياً.
  4. اختبر إجراءات المستخدم الأساسية، ومنها تسجيل الدخول وإرسال النموذج والدفع، إن كان متاحاً.
  5. فعّل فرض السياسة وراقب الأخطاء بعد التطبيق.

لا تطبّق HSTS، وهي الآلية التي تُفعّلها ترويسة Strict-Transport-Security، إلا بعد التأكد من أن HTTPS يعمل بصورة سليمة. يشمل المعامل includeSubDomains النطاقات الفرعية أيضاً، لذا افحص قبل استخدامه الخدمات التي قد لا تخطر ببالك مباشرةً. وراجع الوثائق الرسمية للمنصة والمتصفحات المستخدمة للتحقق من الصياغة الحالية للتوجيهات ومدى دعمها.

ما الذي لا تخبرك به نتيجة ماسح الأمان

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

لن تُصلح الترويسات أخطاء الصلاحيات، ولا ثغرات قاعدة البيانات، ولا تسرّب الأسرار في الشيفرة. ابدأ بفحص الاستجابات الفعلية لموقعك، واختر تغييراً واحداً تستطيع التحقق من أثره قبل نشره.

انظر أيضاً: ما هي CSP؟

اقرأ أيضًا

تعرّف على كيفية معالجة PHP-FPM لطلبات PHP، والفرق بينه وبين خادم الويب، وكيفية ضبط عملياته وفق حركة الزيارات وموارد الاستضافة.
تعرّف إلى BIND، برنامج خادم DNS مفتوح المصدر، وأدواره في خدمة النطاقات، ومتطلبات تأمينه، ومتى تختار تشغيله بنفسك أو خدمة مُدارة.
تعرّف إلى سجل REGON ورقم التعريف فيه في بولندا، والفرق بينه وبين NIP وKRS، وكيفية التحقق من بيانات المنشآت وحدود ما يثبته السجل.