· 2 دقائق قراءة
CSP وترويسات الأمان: كيف أُحكم إغلاق هذا الموقع
البورتفوليو موقع صغير، وهذا يجعله مكانًا جيدًا لممارسة أمان المواقع الكبيرة: سياسة أمان محتوى بالبصمات، وبلا سكربتات من طرف ثالث، وترويسات لا تكلف شيئًا.
Read in English
يبدو الموقع الشخصي آخر مكان يحتاج أمانًا جادًا. لكنه موقع يحمل اسمي، وفيه نموذج تواصل ولوحة تحكم، وهو أسهل مكان ممكن لممارسة العادات التي أتوقعها من منصة تجارة إلكترونية. وهذا ما يحميه.
سياسة أمان محتوى تسمّي كل سكربت
تعمل هجمات حقن السكربتات عبر جعل المتصفح يشغّل كودًا لم تقصده. وسياسة أمان المحتوى (CSP) تخبر المتصفح بالضبط أي السكربتات مسموحة. هذا الموقع يسمح بالسكربتات من نطاقه، وبسكربت التحقق من Cloudflare لاختبار تحقق بشري اختياري. وكل سكربت مضمَّن، بدءًا من الصغير الذي يعمل قبل أول رسم للصفحة، لا يُسمح به إلا عبر بصمة SHA-256 لمحتواه بالضبط:
default-src 'self';
script-src 'self' https://challenges.cloudflare.com 'sha256-…';
object-src 'none';
base-uri 'self';
frame-ancestors 'none';
form-action 'self';
upgrade-insecure-requestsلو نجح مهاجم في حقن <script> في صفحة، سيرفض المتصفح تشغيله لأن بصمته ليست في القائمة. ويحسب إطار العمل بصمات سكربتاته وقت البناء، فتبقى السياسة صارمة دون عمل يدوي.
بلا سكربتات من طرف ثالث افتراضيًا
أبسط طريقة لتجنب مفاجآت سلسلة التوريد هي ألا تحمّل كود الآخرين في المتصفح. لا أكواد تحليلات، ولا أدوات دردشة، ولا شبكات توزيع للخطوط. والاستثناء الوحيد الذي تسمح به السياسة، سكربت التحقق من Cloudflare، لا يُحمَّل إلا إذا فُعّل اختبار التحقق البشري الاختياري. الخطوط مستضافة ذاتيًا ومقلّصة إلى المجموعات اللاتينية والعربية التي يستخدمها الموقع. وهذا وعد خصوصية أيضًا: زيارتك للموقع لا تخبر شركة أخرى بأنك كنت هنا.
ترويسات لا تكلف شيئًا
- Strict-Transport-Security يبقي المتصفحات على HTTPS.
- X-Content-Type-Options: nosniff يمنع المتصفح من تخمين نوع الملفات.
- Referrer-Policy: strict-origin-when-cross-origin يتجنب تسريب الروابط الكاملة لمواقع أخرى.
- Permissions-Policy يوقف الكاميرا والميكروفون والموقع الجغرافي وواجهات الدفع، مع السماح بمفاتيح المرور على هذا النطاق.
- frame-ancestors 'none' وX-Frame-Options: DENY يمنعان تضمين الموقع في إطار لخداع النقر.
لوحة التحكم أشد صرامة
تضيف منطقة الإدارة noindex، وتمنع التخزين المؤقت، وتحفظ الجلسات في كوكيز آمنة لا تصل إليها السكربتات، وتفرض التحقق الثنائي، وتدعم مفاتيح المرور، وتحدّ عدد محاولات الدخول، وتسجّل كل تغيير. والملفات المرفوعة يُعاد ترميزها على الخادم، فتُزال البيانات الوصفية وكل ما ليس صورة، وتُنظَّف ملفات SVG وتُقدَّم بسياسة عزل.
نماذج بلا أدوات تتبع
يستخدم نموذج التواصل حقلًا مخفيًا كمصيدة، وطابعًا زمنيًا موقّعًا يكشف إرسال الروبوتات الفوري، وحدًا لعدد المحاولات لكل عنوان IP، مع حفظ العناوين كبصمات مملّحة فقط. واختبار التحقق البشري اختياري، لا خط الدفاع الأول.
كيف تفحص موقعك؟
افتح موقعك، ثم أدوات المطوّر في المتصفح، وانظر إلى ترويسات استجابة صفحة HTML. واسأل: هل توجد CSP، وهل تسمح بسكربتات 'unsafe-inline'؟ أي نطاقات خارجية تحمّل كودًا؟ هل HSTS مضبوط؟ هل يمكن تضمين الموقع في إطار؟ أدوات مثل Mozilla Observatory وsecurityheaders.com تعطيك تقييمًا في ثوانٍ.
الأمان في موقع صغير في معظمه قرار يُتخذ مرة واحدة: ألا تحمّل ما لا تحتاجه، وأن تكتب القواعد في الترويسات ليفرضها المتصفح نيابة عنك.



