HSTS چیست؟
پروتکل HSTS (Strict Transport Security) یک پروتکل امنیتی پیشرفته برای وبسایتها است. این پروتکل به وبسایتها اجازه استفاده از گواهیهای ناامن SSL را نمیدهد. به عبارت دیگر، وقتی از HSTS استفاده میشود، مرورگرها مجبور میشوند همیشه از ارتباط امن HTTPS با وبسایت استفاده کنند. این امر از نظر امنیتی بسیار حیاتی است.
به طور خلاصه، HSTS به وبسایتها اجازه نمیدهد که از ارتباط ناامن HTTP استفاده کنند و تمام درخواستها به صورت امن انجام شود. این مکانیزم میتواند از حملاتی مانند تزریق کد، حملات Man-in-the-Middle و سرقت اطلاعات جلوگیری کند
کاربرد پروتکل HSTS کجاست؟
HSTS یک پروتکل امنیتی است که در سال ۲۰۱۲ برای جلوگیری از حملات MITM به وبسایتها معرفی شد. این پروتکل، با عدم پذیرش گواهیهای SSL نامعتبر که ممکن است امنیت وبسایت را به خطر بیاندازند، امنیت وبسایتها را ارتقا میدهد.
در حملات MITM، هکرها گواهی SSL وبسایت را حذف میکنند و مرورگر فقط از پروتکل HTTP برای دسترسی به وبسایت استفاده میکند. این باعث میشود که هکرها به اطلاعات حساس دسترسی پیدا کنند. پروتکل HSTS دسترسی به وبسایت بدون استفاده از پروتکل HTTPS را ممنوع میکند.
این پروتکل باعث میشود حتی اگر گواهی SSL وبسایت را هم بتوان حذف کرد، حداقل با استفاده از پروتکل HTTP امکان دسترسی به وبسایت ممنوع شود.
نحوه عملکرد پروتکل HSTS
زمانی که به یک وبسایت که از سرویس HSTS استفاده میکند وارد میشوید، وبسرور اطلاعات مربوط به این پروتکل را در هدر پاسخی که برای درخواست شما ارسال میشود قرار میدهد و مرورگر این اطلاعات را ذخیره میکند.
در صورتی که بار دیگر به این وبسایت مراجعه کنید و بهجای https:// از http:// استفاده کنید، مرورگر با استفاده از دیتاهای هدر پروتکل HSTS که در خود ذخیره کرده، شما را به صفحهی با اتصال امن https:// فوروارد میکند و اطلاعات شما را بهصورت امن منتقل میکند.
هرگاه HSTS در یک وبسایت استفاده شود، حتی اگر کاربر تلاش کند پیغام امنیتی گواهی نامعتبر را لغو کند، باز هم اجازهی انجام این کار به او داده نمیشود. به علاوه، با اینکه HSTS مانع دسترسی غیرمجاز به کوکیها نیز میشود، اطلاعات مهم و امنیتی مانند اطلاعات کارت بانکی و غیره که در کوکیها ذخیره میشوند، با استفاده از این روش ایمن خواهند ماند.
آیا HSTS کاملا ایمن است؟
در واقعیت، هیچ چیزی در دنیا به طور کامل کامل نیست و این قاعدهای است که بر روی پروتکل HSTS نیز اعمال میشود. یکی از مهمترین دلایل این ویژگی، این است که هنگام اتصال اولیه به یک وبسایت، هنوز توسط سرویس HSTS محافظت نمیشوید. به عبارت دیگر، حتی اگر وبسایت هدر HSTS را به کانکشن HTTP اضافه کند، در اولین اتصال، از این هدر استفاده نخواهد شد.
بنابراین نکته اول این است که هدر HSTS قادر نیست شما را به شکلی فوریتی حفاظت کند، مگر اینکه اطلاعات از طریق پروتکل HTTPS ارسال شوند. نکته دوم نیز مربوط به قسمت max-age در کد است که وبسرور شما اضافه کرده است. هر بار که مرورگر هدر وبسایت را میخواند، مقدار max-age نیز بهروزرسانی میشود. این زمان مشخص میکند که تا چه زمانی این هدر معتبر است. معمولاً این مقدار به دو سال تعیین میشود. بنابراین، اگر مقدار ماکزیمم را برای max-age قرار بدهیم و بین دو بازدید از سایت، بیشتر از دو سال نگذرد، میتوانیم اطمینان داشته باشیم. اما اگر بیشتر از مقدار max-age که در وبسایت قرار دادهاید، از وبسایت بازدید نکنید، مرورگر مانند یک وبسایت جدید با آن رفتار میکند و پروتکل HSTS در اولین بازدید پس از دو سال، عمل نخواهد کرد.
فعال کردن پروتکل HSTS برای سایت های وردپرسی
برای فعالسازی HSTS در وردپرس، باید یک هدر جدید در درخواستهای ارسالی از سمت سرور برای مرورگر کاربر ارسال شود. برای اینکار، میتوانید از یکی از این دو روش استفاده کنید، بسته به نوع وبسرور سایت خود:
1. تنظیمات سرور: با تنظیمات مربوطه در وبسرور مانند Apache یا Nginx، میتوانید هدر HSTS را ارسال کنید.
2. استفاده از افزونههای امنیتی: در وردپرس، افزونههای امنیتی مختلفی وجود دارند که امکان فعالسازی HSTS را بر روی سایت شما فراهم میکنند، بدون نیاز به دستکاری تنظیمات سرور.
فعالسازی HSTS در وب سرور آپاچی و لایت اسپید (مناسب برای اکثریت وب سایت ها)
برای فعالسازی HSTS در وبسرور Apache و LiteSpeed، میتوانید به فایل .htaccess در دایرکتوری public_html دسترسی پیدا کنید و کدهای زیر را در آن قرار دهید:
<IfModule mod_headers.c>
Header set Strict-Transport-Security “max-age=31536000;preload” env=HTTPS
</IfModule>
سپس فایل را ذخیره کنید. این تنظیمات باعث میشود که وبسایت شما بهصورت خودکار از HTTP به HTTPS ریدایرکت شود، حتی قبل از ارسال درخواست به وبسرور.
اگر میخواهید تمام سابدامنههای خود از HTTPS استفاده کنند، میتوانید از کد زیر استفاده کنید:
<IfModule mod_headers.c>
Header set Strict-Transport-Security “max-age=31536000;includeSubDomains;preload” env=HTTPS
</IfModule>
با قرار دادن این کدها، امنیت وبسایت شما افزایش مییابد و ارتباطات بین کاربران و سرور با استفاده از HTTPS تضمین شده و بهبود مییابد.
فعالسازی HSTS در وب سرور NGINX
اگر از وبسرور Nginx استفاده میکنید، میتوانید به فایل nginx.conf دسترسی پیدا کرده و کد زیر را به Virtual Server مربوط به وبسایت خود اضافه کنید:
add_header Strict-Transport-Security “max-age=63072000;”;
سپس وبسرور Nginx را ریستارت کنید تا تغییرات اعمال شود. با این کار، از قابلیت HSTS در وبسایت خود استفاده کرده و امنیت ارتباطات را افزایش دهید.
چگونه اطمینان حاصل کنیم که پروتکل HSTS فعال شده است
برای اطمینان از فعال بودن HSTS روی وبسایت شما، کافیست به آدرس https://gf.dev/hsts-test مراجعه کنید. سپس وبسایت خود را وارد کرده و گزینه تست را کلیک کنید. این سایت وضعیت فعال بودن HSTS را بر روی وبسایت شما بررسی میکند.
جمع بندی
پروتکل HSTS یک سیستم امنیتی است که اگر امنیت کاربران وبسایت برایتان اهمیت دارد، احتمالاً به دنبال آن بودهاید. اگر از گواهی SSL غیرمعتبر بر روی وبسایت خود استفاده کردهاید یا هکرها توانسته باشند این گواهی را حذف کنند، سرویس HSTS اجازه دسترسی به وبسایت را، حتی با رد کردن پیغام خطای امنیتی مرورگر، به کاربران نمیدهد. در این مطلب از بلاگ پارسپک، علاوه بر ارائه اطلاعات کامل در مورد این سرویس، نحوه نصب آن را هم بر روی وبسایت آموزش دادهایم.
HSTS (Strict Transport Security) یک پروتکل امنیتی پیشرفته برای وبسایتها است که به وبسایتها اجازه استفاده از ارتباط امن HTTPS را میدهد و از استفاده از ارتباط ناامن HTTP جلوگیری میکند.
پروتکل HSTS برای جلوگیری از حملات MITM (Man-in-the-Middle) و افزایش امنیت وبسایتها استفاده میشود. این پروتکل از ارتباطات ناامن با استفاده از HTTP جلوگیری میکند و تمام درخواستها را به صورت امن انجام میدهد.
در واقعیت، هیچ چیزی در دنیا به طور کامل کامل نیست و این قاعدهای است که بر روی پروتکل HSTS نیز اعمال میشود. به عنوان مثال، در اتصال اولیه به یک وبسایت، هنوز توسط سرویس HSTS محافظت نمیشوید و برخی دلایل دیگر هم وجود دارد که میتواند امنیت را به مخاطره بیندازد.