HSTS (HTTP Strict Transport Security) در مقابل ریدایرکت ۳۰۱ به HTTPS
ریدایرکت ۳۰۱ روشی است که سرور درخواست HTTP اولیه را میگیرد و کاربر را به نسخه HTTPS هدایت میکند، اما همان درخواست اول هنوز رمزنگارینشده و در معرض حمله Man-in-the-Middle است؛ HSTS یک هدر است که به مرورگر میگوید برای مدت مشخصی حتی درخواستهای بعدی را هم مستقیماً و بدون تلاش اولیه HTTP به HTTPS بفرستد.
| ویژگی | HSTS (HTTP Strict Transport Security) | ریدایرکت ۳۰۱ به HTTPS |
|---|---|---|
| محافظت از درخواست اول | دارد | ندارد |
| محل اعمال | هدر پاسخ سرور | تنظیمات ریدایرکت سرور |
| نیاز به یکدیگر | مکمل ریدایرکت است | بهتنهایی کافی نیست |
کِی از HSTS (HTTP Strict Transport Security) استفاده کنیم؟
وقتی فقط میخواهید اطمینان حاصل کنید کاربرانی که با HTTP وارد میشوند به نسخه امن سایت هدایت شوند، بهعنوان یک لایه پایه.
کِی از ریدایرکت ۳۰۱ به HTTPS استفاده کنیم؟
وقتی میخواهید حتی احتمال ضعیف حمله در همان یک درخواست اول HTTP را هم حذف کنید و مرورگر را مجبور کنید همیشه مستقیم HTTPS درخواست بزند.
مثال HSTS (HTTP Strict Transport Security)
server {
listen 80;
return 301 https://$host$request_uri;
}
مثال ریدایرکت ۳۰۱ به HTTPS
add_header Strict-Transport-Security
"max-age=31536000; includeSubDomains" always;
اشتباه رایج
اشتباه رایج این تصور است که فقط ریدایرکت ۳۰۱ کافی است؛ اما همان درخواست اول HTTP قبل از ریدایرکت شدن، در شبکههای ناامن (مثل Wi-Fi عمومی) قابل شنود یا دستکاری است، و HSTS دقیقاً همین شکاف را میبندد.
جمعبندی
ریدایرکت ۳۰۱ حداقل لازم برای هدایت کاربران به HTTPS است، اما برای امنیت کامل باید همیشه HSTS را هم فعال کنید تا حتی درخواست اول هم امن باشد.
