
الشركات التي تبيع بطاقات الأداء الأمنية آخذة في الارتفاع ، ونفوذها في مبيعات الشركات آخذ في الازدياد. بالإضافة إلى ذلك ، هناك أولئك الذين يشعرون بالارتباك بسبب التصنيف الأمني المنخفض للبائعين ، والذين رفضوا الشراء مرة واحدة على الأقل - لقد تحدثت مع هؤلاء الأشخاص.
نظرت إلى كيفية حساب هذه الشركات لأداء السلامة للشركات الأخرى. اتضح أنهم كانوا يبحثون في مزيج من استخدام رأس HTTP للأمان وسمعة عناوين IP.
تستند سمعة عنوان IP إلى القائمة السوداء وبيانات قائمة مرسلي البريد العشوائي إلى جانب معلومات حول مالك عنوان IP العام. من حيث المبدأ ، يجب أن تكون نظيفة إذا كانت شركتك لا ترسل رسائل غير مرغوب فيها وتكون قادرة على تحديد وإيقاف التنفيذ الضار بسرعة. يتم حساب استخدام رأس أمان HTTP بنفس الطريقة التي يعمل بها مرصد موزيلا .
وبالتالي ، يتم تحديد تصنيف معظم الشركات بشكل رئيسي من خلال العناوين المدرجة على المواقع العامة للأمان.
لم يعد تعيين العنوان بشكل صحيح (لا يلزم التحقق بشكل جاد) ، ولكنه سيحسن من أمان الموقع ويساعد على عدم فقد العملاء الذين لا تعتبر سلامتهم عبارة فارغة
أشك في قيمة منهجية التحقق المذكورة ؛ علاوة على ذلك ، فإن سعر الخدمة باهظ. من غير المحتمل أن يكون مقدمو هذه الخدمة قادرين على تحديد أمان المورد بدقة محددة. ومع ذلك ، يؤكد الموقف مرة أخرى على أهمية الجلوس وقضاء بعض الوقت في التشغيل وإعداد العناوين الصحيحة.
سأتحدث في هذه المقالة عن الرؤوس التي يتم فحصها بشكل متكرر ، بالنسبة لكل منها سأقدم لك النصائح حول قيم الأمان وأعطي مثالاً على الإعدادات. في النهاية ، سأقدم أمثلة على الإعدادات للتطبيقات الشائعة وخوادم الويب.
رؤوس أمنية مهمة
المحتوى الامنية-سياسة
يستخدم CSP لمنع البرمجة النصية للمواقع المشتركة - عن طريق تحديد الموارد التي يمكن تنزيلها. من القائمة بأكملها ، سيستغرق هذا العنوان وقتًا أطول من الباقي لإنشاء ودعم بشكل صحيح ، وحتى أكثر من الآخرين في خطر. عند تطوير CSP ، تحقق من ذلك بعناية - إذا قمت بحظر فجأة المصدر الذي تستخدمه ، فقم بتعطيل وظائف موقعك.
بالنسبة للإصدار الأولي ، يمكنك استخدام أداة رائعة - امتداد لمتصفح Mozilla ، Laboratory CSP . قم بتثبيته في مستعرض ، ودرس بعناية الموقع الذي تريد إنشاء CSP له ، ثم استخدم CSP الذي تم إنشاؤه على موقعك. من الناحية المثالية ، لا تزال بحاجة إلى إعادة صياغة JavaScript حتى تتمكن من إزالة التوجيه المضمّن غير الآمن.
قد يبدو CSP معقدًا ومربكًا ، لذا إذا كنت تريد الخوض في الموضوع بشكل أعمق ، فقم بزيارة الموقع الرسمي .
يمكنك تهيئة CSP مثل هذا مسبقًا (في موقع القتال ، من المرجح أن يتطلب الكثير من التعديلات). إضافة مجالات إلى كل قسم من موقعك.
# Default to only allow content from the current site # Allow images from current site and imgur.com # Don't allow objects such as Flash and Java # Only allow scripts from the current site # Only allow styles from the current site # Only allow frames from the current site # Restrict URL's in the <base> tag to current site # Allow forms to submit only to the current site Content-Security-Policy: default-src 'self'; img-src 'self' https://i.imgur.com; object-src 'none'; script-src 'self'; style-src 'self'; frame-ancestors 'self'; base-uri 'self'; form-action 'self';
صارم النقل و الأمن
يخبر هذا الرأس المتصفح أنه لا يمكنك الدخول إلى الموقع إلا باستخدام بروتوكول HTTPS - قم دائمًا بتمكينه في حالة تنشيط HTTPS على موقعك. قم بتضمينها في جميع النطاقات الفرعية المستخدمة ، إن وجدت.
Strict-Transport-Security: max-age=3600; includeSubDomains
X-نوع المحتوى-خيارات
بفضل هذا العنوان ، تلتزم المتصفحات بأنواع MIME المثبتة بواسطة التطبيق ، مما يساعد على منع بعض هجمات البرمجة النصية عبر المواقع.
كما أنه يقلل من مخاطر سلوك التطبيق غير المتوقع عندما يقوم المتصفح "بتخمين" نوع المحتوى على الموقع بشكل غير صحيح - على سبيل المثال ، إذا قام المطور بتعيين صفحة "HTML" ورأى المستعرض JavaScript ويحاول عرض الصفحة وفقًا لذلك. أيضًا ، بفضل هذا الرأس ، يحتفظ المستعرض دائمًا بأنواع MIME المثبتة بواسطة الخادم.
X-Content-Type-Options: nosniff
التحكم في ذاكرة التخزين المؤقت
سيكون هذا النوع أكثر فقراً من الأنواع الأخرى ، لأن أنواع المحتوى المختلفة ربما تحتاج إلى سياسات تخزين مؤقت مختلفة.
لا يجب تخزين أي معلومات حساسة - مثل صفحة المستخدم أو صفحة دفع المنتج - مؤقتًا. أحد أسباب ذلك هو أن مستخدم الكمبيوتر الآخر لا يضغط على زر الرجوع ، ولا يقرأ السجل ولا يرى البيانات الشخصية لمستخدم آخر.
ومع ذلك ، يمكنك ويجب عليك تخزين تلك الصفحات التي نادراً ما يتم تحديثها ، مثل الموارد الثابتة (الصور وملفات CSS و JS). يمكن تكوين التخزين المؤقت على أساس كل صفحة على حدة ، أو باستخدام regex في إعدادات الخادم.
# Don't cache by default Header set Cache-Control no-cache # Cache static assets for 1 day <filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$"> Header set Cache-Control "max-age=86400, public" </filesMatch>
تنتهي
يعين هذا الرأس الوقت الذي يتم فيه مؤقتًا تخزين الطلب الحالي. يتم تجاهله إذا تم تمكين رأس الحد الأقصى لعمر Cache-Control ، لذلك نحن فقط نقوم بتمكينه في حالة فحص الماسح الضوئي البسيط له - باستثناء عناصر التحكم في التخزين المؤقت.
نفترض أنه لأسباب أمنية ، لا يقوم المتصفح بتخزين أي شيء مؤقتًا ، لذلك سيكون التاريخ في الرأس دائمًا في الماضي.
Expires: 0
X-الإطار-خيارات
يتيح هذا الرأس عرض الموقع في iFrame.
من خلال وضع موقع الويب الخاص بك في iFrame ، يحصل مورد ضار على فرصة للقيام بهجوم النقر - عن طريق إطلاق نوع من جافا سكريبت يقوم بخداع المستخدم للنقر على iFrame ، ثم يبدأ بالتفاعل مع المورد من مستخدمه أو اسم المستخدم (مثل ، يقوم شخص بالنقر فوق ارتباط أو زر ضار دون حتى معرفة ذلك!).
يجب دائمًا تهيئة هذا العنوان للفشل ، باستثناء ما إذا كنت تستخدم الإطارات عن قصد. ثم يجب ضبط الرأس على نفس المصدر. إذا كنت تستخدم إطارات مع موقع مختلف افتراضيًا ، فقم بإدراج نطاق الجهة الخارجية في القائمة البيضاء.
تجدر الإشارة إلى أنه يتم استبدال هذا الرأس بتوجيه أجداد إطار CSP. أوصي بتشغيله في الوقت الحالي ، ولكن فقط لإغلاق الأدوات اللازمة لفحص الرؤوس ، فمن المرجح أن تتخلص منها في المستقبل.
X-Frame-Options: deny
الوصول تحكم-السماح-المنشأ
يخبر هذا الرأس المتصفح أي كود خارجي من مواقع الطرف الثالث له الحق في تقديم طلبات إلى صفحة محددة. عادة ما تكون الإعدادات الافتراضية صحيحة ، ولكن يمكنك تغييرها إذا لزم الأمر.
على سبيل المثال ، يحتوي الموقع "أ" على نوع من جافا سكريبت يريد تقديم طلب إلى الموقع ب. يجب أن يستجيب الموقع "ب" لهذا الطلب - إذا كان الرأس يسمح للموقع "أ" بتقديم طلب. إذا كنت بحاجة إلى تكوين العديد من المصادر ، فراجع التفاصيل في صفحة MDN .
هنا يمكنك أن تشعر بالارتباك قليلاً ، لذلك قمت بعمل رسم تخطيطي - لتوضيح كيفية عمل هذا الرأس:

دفق البيانات باستخدام Access-Control-Allow-Origin
Access-Control-Allow-Origin: http://www.one.site.com
تعيين ملف تعريف الارتباط
تأكد من تعيين ملفات تعريف الارتباط الخاصة بك فقط عبر بروتوكول HTTPS (مع التشفير) وأنه لا يمكن الوصول إليها عبر JavaScript. لا يمكن إرسال هذه الملفات إلا إذا كان موقعك يدعم HTTPS ، كما يجب أن يكون. تحتاج دائمًا إلى تعيين هذه العلامات:
مثال تعريف ملف تعريف الارتباط:
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
اقرأ المزيد في وثائق ملفات تعريف الارتباط Mozilla الممتازة.
X-XSS-حماية
يخبر هذا الرأس المستعرض بإجهاض هجمات البرمجة النصية عبر المواقع المكتشفة. من خلال تشغيله ، لا تخاطر كثيرًا ، ولكن تختبره قبل تشغيله في بيئة الإنتاج.
X-XSS-Protection: 1; mode=block
مثال على إعدادات خادم الويب
بشكل عام ، من الأفضل في إعدادات الخادم إضافة رؤوس إلى الموقع بأكمله. ملفات تعريف الارتباط هي استثناء ، لأنها محددة في التطبيق نفسه.
أنصحك ، قبل إضافة الرؤوس إلى الموقع ، أولاً بفحص المرصد أو البحث يدويًا في الرؤوس - تحقق من الرؤوس المثبتة بالفعل. تقوم بعض محركات الموقع والخوادم بتثبيت كل شيء بمفردها ، لذلك فقط قم بتنفيذ الرؤوس التي تحتاج إليها أو قم بتغيير تلك التي تحتاج إليها.
تكوين اباتشي
مثال تكوين Apache في .htaccess:
<IfModule mod_headers.c> ## CSP Header set Content-Security-Policy: default-src 'self'; img-src 'self' https://i.imgur.com; object-src 'none'; script-src 'self'; style-src 'self'; frame-ancestors 'self'; base-uri 'self'; form-action 'self'; ## General Security Headers Header set X-XSS-Protection: 1; mode=block Header set Access-Control-Allow-Origin: http://www.one.site.com Header set X-Frame-Options: deny Header set X-Content-Type-Options: nosniff Header set Strict-Transport-Security: max-age=3600; includeSubDomains ## Caching rules # Don't cache by default Header set Cache-Control no-cache Header set Expires: 0 # Cache static assets for 1 day <filesMatch ".(ico|css|js|gif|jpeg|jpg|png|svg|woff|ttf|eot)$"> Header set Cache-Control "max-age=86400, public" </filesMatch> </IfModule>
التكوين Nginx
## CSP add_header Content-Security-Policy: default-src 'self'; img-src 'self' https://i.imgur.com; object-src 'none'; script-src 'self'; style-src 'self'; frame-ancestors 'self'; base-uri 'self'; form-action 'self'; ## General Security Headers add_header X-XSS-Protection: 1; mode=block; add_header Access-Control-Allow-Origin: http://www.one.site.com; add_header X-Frame-Options: deny; add_header X-Content-Type-Options: nosniff; add_header Strict-Transport-Security: max-age=3600; includeSubDomains; ## Caching rules # Don't cache by default add_header Cache-Control no-cache; add_header Expires: 0; # Cache static assets for 1 day location ~* \.(?:ico|css|js|gif|jpe?g|png|svg|woff|ttf|eot)$ { try_files $uri @rewriteapp; add_header Cache-Control "max-age=86400, public"; }
إعداد رأس مستوى التطبيق
إذا لم يكن لديك حق الوصول إلى خادم الويب أو كانت متطلبات تعيين الرؤوس معقدة ، فربما يتعين عليك تكوينها في التطبيق نفسه. عادةً ما يتم ذلك عن طريق الموقع بأكمله باستخدام الوسيطة ، أو بناءً على إعداد الرؤوس لمرة واحدة لكل طلب.
للإيجاز ، قمت بتضمين عنوان واحد فقط في كل مثال. تضيف بنفس الطريقة كل ما هو مطلوب.
العقدة والتعبير:
إضافة مسار التحميل العالمي:
app.use(function(req, res, next) { res.header('X-XSS-Protection', 1; mode=block); next(); });
جافا والربيع
لدي خبرة قليلة مع Spring ، لكن Baeldung لديه دليل رائع حول إعداد الرؤوس في Spring.
PHP
لست على دراية ببيئات PHP المختلفة. ابحث عن الوسيطة للاستعلامات. لطلب واحد ، كل شيء بسيط.
header("X-XSS-Protection: 1; mode=block");
بيثون / جانغو
يحتوي Django على برنامج وسيط أمان قابل للتخصيص سيفعل كل ذلك من أجلك. تفعيلها أولا.
يمكن تفسير إجابات بعض الصفحات على أنها قاموس. لدى Django طريقة خاصة للعمل مع التخزين المؤقت ، وإذا كنت ترغب في تكوين رؤوس التخزين المؤقت بهذه الطريقة ، فأنت بحاجة إلى التعرف عليها.
response = HttpResponse() response["X-XSS-Protection"] = "1; mode=block"
النتائج
تعد عملية إعداد الرؤوس عملية بسيطة وسريعة نسبيًا ، ولكنها توفر زيادة في مستوى أمان الموقع - من حيث حماية البيانات ، من البرمجة النصية عبر المواقع وضغط النقرات.
في المستقبل ، سوف تحمي نفسك من فشل المعاملات ، لأن تصنيف الأمان الخاص بك سيبقى على المستوى. تكتسب ممارسة تقييمها بناءً على المعلمات التي درستها قوة دفع ، ويبدو لي أن دورها في السنوات المقبلة في مجال المبيعات سيزداد.
اسمحوا لي أن أعرف إذا فاتني بعض العناوين الهامة!