كيف تضيف ترويسات أمان HTTP المفقودة إلى موقعك
ترويسات الأمان ترويسات استجابة HTTP تُرشد المتصفحات إلى كيفية التعامل مع محتوى موقعك — فتمنع اختطاف النقرات (clickjacking)، وتخمين نوع المحتوى (MIME sniffing)، والهجمات عبر المصادر المختلفة (cross-origin)، وتسرّب المعلومات. ومعظمها سطر واحد من الإعدادات. إليك وظيفة كل منها وكيف تضيفها.
الترويسات ووظائفها والقيم التي تستخدمها
X-Content-Type-Options
الغرض: يمنع المتصفحات من تخمين نوع محتوى للاستجابة (MIME sniffing) يخالف النوع المُعلَن. ويوقف بعض الهجمات التي يُرفع فيها ملف بنوع ثم يُنفَّذ بنوع آخر.
X-Content-Type-Options: nosniff
هذه هي القيمة الصالحة الوحيدة. استخدم nosniff دائمًا.
Referrer-Policy
الغرض: يتحكم في مقدار معلومات المُحيل (referrer) المُضمَّنة عندما ينتقل المستخدم من موقعك إلى موقع آخر. ومن دونه، قد يتسرّب عنوان URL الكامل (بما فيه المسارات وسلاسل الاستعلام التي تحمل بيانات حساسة).
Referrer-Policy: strict-origin-when-cross-origin
ترسل هذه القيمة عنوان URL الكامل بوصفه مُحيلًا للطلبات من المصدر نفسه، وترسل المصدر فقط (دون المسار) للطلبات إلى مصادر أخرى.
Permissions-Policy
الغرض: يتحكم في ميزات المتصفح وواجهاته البرمجية (API) التي يُسمح لصفحتك باستخدامها (الكاميرا والميكروفون وتحديد الموقع الجغرافي وغيرها). ويمنع النصوص البرمجية الخبيثة المحقونة من الوصول إلى ميزات لا تستخدمها.
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
اذكر فقط الميزات التي يستخدمها موقعك فعلًا. والقيمة الفارغة () تمنع الوصول تمامًا.
X-Frame-Options
الغرض: يمنع تضمين صفحتك في إطار iframe على موقع آخر (دفاع ضد اختطاف النقرات).
X-Frame-Options: DENY
أو إذا كنت تحتاج إلى السماح بالتضمين على نطاقك أنت:
X-Frame-Options: SAMEORIGIN
ملاحظة: إذا كانت لديك ترويسة Content-Security-Policy تتضمن التوجيه frame-ancestors، فإنه يتقدّم على X-Frame-Options في المتصفحات الحديثة.
Cross-Origin-Opener-Policy (COOP)
الغرض: يمنع المواقع الأخرى من الوصول إلى كائن window الخاص بك إذا فتحت صفحتك، مما يحمي من الهجمات عبر المصادر المختلفة.
Cross-Origin-Opener-Policy: same-origin
كيف تضيف الترويسات — بحسب المنصة
Cloudflare (Transform Rules)
Security → Transform Rules → Modify Response Header → Add new rule ← أضف كل ترويسة كإجراء Set.
Nginx
add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always; add_header X-Frame-Options "DENY" always; add_header Cross-Origin-Opener-Policy "same-origin" always;
Apache
Header always set X-Content-Type-Options "nosniff" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()" Header always set X-Frame-Options "DENY" Header always set Cross-Origin-Opener-Policy "same-origin"
Vercel (vercel.json)
{
"headers": [
{
"source": "/(.*)",
"headers": [
{ "key": "X-Content-Type-Options", "value": "nosniff" },
{ "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" },
{ "key": "Permissions-Policy", "value": "camera=(), microphone=(), geolocation=()" },
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "Cross-Origin-Opener-Policy", "value": "same-origin" }
]
}
]
}Netlify (netlify.toml)
[[headers]]
for = "/*"
[headers.values]
X-Content-Type-Options = "nosniff"
Referrer-Policy = "strict-origin-when-cross-origin"
Permissions-Policy = "camera=(), microphone=(), geolocation=()"
X-Frame-Options = "DENY"
Cross-Origin-Opener-Policy = "same-origin"تحقق من نجاح الإجراء
افحص نطاقك على mydomainrisk.com — ستُظهر بطاقة ترويسات الأمان حالة النجاح/الإخفاق لكل ترويسة على حدة، وستتحدّث درجتك لتعكس الإصلاحات.
افحص ترويسات الأمان
يفحص MyDomainRisk ترويسات الأمان الشائعة ويشرح بدقة ما ينقص — مجانًا.
افحص نطاقًا مجانًا ←