كيف تضيف HSTS إلى موقعك
إذا أظهر فحص أمان نطاقك أن HSTS غير مُعدّ، فإن المتصفحات التي تزور موقعك ليست مُلزَمة باستخدام HTTPS في كل طلب. يشرح هذا الدليل كيف تضيف ترويسة Strict-Transport-Security بشكل صحيح.
ماذا تعني هذه النتيجة
HSTS (HTTP Strict Transport Security) ترويسة استجابة HTTP تُخبر المتصفحات باستخدام HTTPS دائمًا عند الاتصال بنطاقك — ورفض اتصالات HTTP تمامًا لمدة محددة. ومن دون HSTS، حتى لو كان خادمك يعيد توجيه HTTP إلى HTTPS، فقد يُرسَل أول طلب للمستخدم في اتصال جديد لوهلة عبر HTTP غير المشفّر قبل أن تحدث إعادة التوجيه.
لماذا يهم ذلك
- يمنع هجمات SSL stripping التي يخفّض فيها المهاجم الاتصال من HTTPS إلى HTTP
- يزيل نافذة الضعف في أول طلب HTTP
- مطلوب للتحميل المسبق لـHSTS (HSTS preloading) — وهي القائمة التي تحتفظ بها المتصفحات للمواقع التي تعمل دائمًا عبر HTTPS
- يعزز ثقة المستخدمين، ويُعدّ دليلًا مفيدًا في معظم تقييمات النطاقات
قيمة ترويسة HSTS الصحيحة
ابدأ بقيمة max-age قصيرة، وزِدها بعد أن تتأكد من أن HTTPS يعمل بشكل موثوق في نطاقك بالكامل.
قيمة البداية (آمنة)
تُخبر هذه القيمة المتصفحات باستخدام HTTPS لمدة ٢٤ ساعة:
Strict-Transport-Security: max-age=86400
القيمة الموصى بها (بعد التأكد من أنها تعمل)
تفرض هذه القيمة HTTPS لمدة سنة على جميع النطاقات الفرعية:
Strict-Transport-Security: max-age=31536000; includeSubDomains
قيمة جاهزة للتحميل المسبق (اختياري)
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
preload: يصعب التراجع عن التحميل المسبق لـHSTS. فلا تُضف التوجيه preload إلا عندما تكون متأكدًا من أن كل نطاق فرعي في نطاقك يقدّم HTTPS بشكل صحيح. وبعد تقديم النطاق إلى قائمة التحميل المسبق، يستغرق انتشار حذفه منها شهورًا.كيف تضيف الترويسة — بحسب المنصة
Cloudflare
Settings → SSL/TLS → Edge Certificates → HTTP Strict Transport Security → Enable. اضبط max-age على ٦ أشهر على الأقل. ويضيف Cloudflare الترويسة تلقائيًا.
Nginx
أضف إلى كتلة server:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Apache
أضف إلى ملف .htaccess أو إلى إعدادات VirtualHost:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Vercel
أضف إلى vercel.json:
{
"headers": [
{
"source": "/(.*)",
"headers": [
{
"key": "Strict-Transport-Security",
"value": "max-age=31536000; includeSubDomains"
}
]
}
]
}Netlify
أضف إلى netlify.toml:
[[headers]]
for = "/*"
[headers.values]
Strict-Transport-Security = "max-age=31536000; includeSubDomains"تحقق من نجاح الإجراء
افحص نطاقك على mydomainrisk.com — ستُظهر نتيجة HSTS قيمة max-age المرصودة وما إذا كان includeSubDomains وpreload موجودين.
افحص ترويسات الأمان
يفحص MyDomainRisk ترويسات HSTS وCSP وX-Frame-Options وReferrer-Policy وPermissions-Policy وغيرها — مجانًا.
افحص نطاقًا مجانًا ←