HSTS مخفف عبارت HTTP Strict Transport Security یک استاندارد ساده و البته پروتکل پیشرفته امنیتی است. HSTS به مرورگرها اطلاع میدهد که سایت فقط باید با استفاده از HTTPS قابل دسترسی باشد. بهعبارتی هرگونه تلاش برای دسترسی به سایت با استفاده از HTTP باید بهطور خودکار به HTTPS تبدیل شود. در این مقاله به بررسی نحوه فعالسازی HSTS میپردازیم تا با انجام همین کار ساده امنیت وبسایتتان را در برابر حملات سایبری ارتقا دهید.
چرا باید HSTS را فعال کنیم؟
HSTS از وب سرورهای HTTPS در برابر حملات downgrade و فرد واسط (man-in-the-middle) محافظت میکند. طی این نوع حملات مرورگرهای وب از یک وب سرور HTTPS به یک سرور تحت کنترل مهاجم هدایت میشوند و امنیت دادههای کاربر و کوکیها به خطر میافتد. پروتکل HSTS با اضافه کردن یک هدر HTTP اقدامات زیر را انجام میدهد:
- لینکهای HTTP را به لینکهای HTTPS تبدیل میکند؛
- از دور زدن هشدارهای مرورگر SSL توسط کاربران جلوگیری میکند.
قبل از بهکارگیری HSTS، توصیه میکنیم برای دریافت SSL رایگان اقدام کنید تا از مزایایی مانند بهبود عملکرد سایت، بهبود جایگاه سایت در رتبهبندی گوگل و همچنین افزایش اعتماد مشتریان بهرهمند شوید.
بررسی کاربرد HSTS با یک مثال
تصور کنید که به Wi-Fi رایگان در یک فرودگاه وصل میشوید و شروع به گشتوگذار در اینترنت میکنید. در این زمان قصد دارید تا با ورود به سایت بانکی موردنظرتان موجودی حسابتان را بررسی کرده و چند قبض پرداخت کنید. متاسفانه نقطه دسترسی (Access point) مورد استفاده شما در واقع لپتاپ یک هکر است که درخواست اصلی HTTP شما را رهگیری کرده و شما را بهجای سایت واقعی به یک نسخه شبیهسازی سایت بانک موردنظرتان هدایت میکند. به همین راحتی اطلاعات خصوصی شما در دسترس هکر قرار میگیرد.
اینجاست که نقش HSTS پررنگ میشود. چنانچه شما یک بار با استفاده از HTTPS به وبسایت بانکی خود دسترسی داشته باشید و در سایت بانک نیز از HSTS استفاده شده باشد، مرورگر شما بهطور خودکار فقط از HSTS استفاده میکند. بهاینترتیب از حمله فرد واسط (MITM) در امان خواهید بود.
الزامات فعالسازی HSTS
برای اینکه HSTS بهدرستی و مطابق با انتظار کار کند، باید الزامات زیر را در نظر بگیرید. بررسی موارد زیر قبل از فعالسازی HSTS به کاهش حملات و افزایش امنیت سایت کمک میکند:
- HTTPS باید قبل از HSTS فعال شده باشد تا مرورگرها بتوانند تنظیمات HSTS را بپذیرند.
- HTTPS را باید فعال نگه دارید تا بازدیدکنندگان بتوانند به سایت شما دسترسی داشته باشند.
بعد از فعالسازی HSTS از انجام موارد زیر خودداری کنید تا بازدیدکنندگان همچنان امکان دسترسی به سایتتان را داشته باشند:
- تغییر رکوردهای DNS از Proxied به DNS only
- ریدایرکت کردن از HTTPS به HTTP
- غیرفعالسازی سرویس SSL
ذکر این نکته ضروری است که برای انتقال وبسایت از HTTP به HTTPS به گواهی SSL نیاز دارید. برای آشنایی با این گواهی و مزایای استفاده از آن توصیه میکنیم مقاله گواهی SSL را برای مطالعه بیشتر بخوانید.
نحوه پیشبارگیری (Preload) پروتکل HSTS
برای اینکه کاربر بتواند از HSTS استفاده کند، مرورگر او حداقل یک بار باید هدر HSTS را ببیند؛ یعنی کاربران تا زمان اولین اتصال ایمن موفق خود به یک دامنه خاص لزوما از حملات فرد واسط (man-in-the-middle) در امان نخواهند بود. ازهمینرو تیم امنیتی کروم (Chrome) اقدام به ایجاد یک «HSTS preload list» کرد؛ فهرستی از دامنهها در کروم که HSTS را حتی برای اولین بازدید بهطور خودکار فعال میکنند. در ادامه توسعهدهندگان سایر مرورگرها از جمله فایرفاکس، سافاری، اپرا و اج نیز HSTS preload list کروم را در مرورگر خود جای دادند.
تیم امنیتی کروم به همه افراد اجازه میدهد تا دامنه خود را مشروط به انجام موارد زیر، به فهرست ارسال کند:
- HTTPS باید در دامنه اصلی (Root domain) و همه زیردامنهها فعال باشد.
- خط مشی HSTS شامل همه زیردامنهها و یک پرچم پیشبارگیری (preload) میشود که نشان میدهد مالک دامنه با پیشبارگیری موافق است.
- وبسایت از HTTP به HTTPS حداقل در دامنه اصلی ریدایرکت میشود.
مثالی از یک هدر HSTS معتبر برای پیشبارگیری:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
ازآنجاییکه در طولانیمدت وب بهطور کامل به HTTPS تغییر میکند و مرورگرها میتوانند شروع به حذف تدریجی HTTP کنند، فهرست پیشبارگیری HSTS نیز در نهایت ممکن است غیرضروری شود. تا آن زمان، این فهرست یک مکانیسم ساده و موثر برای اعمال HTTPS برای کل دامنه خواهد بود.
آموزش پیکربندی HSTS برای وب سرورهای رایج
در nginx باید یک دستور add_header را روی پیکربندی هاست مجازی مناسب اعمال کنید. نحوه استفاده از این دستور به شرح زیر است:
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload;' always;
در آپاچی، شما میتوانید با اعمال یک دستورالعمل Header always هدر HSTS را تنظیم کنید، مانند:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
در سیستمهای مایکروسافت که روی IIS اجرا میشوند، فایل «htaccess» برای پیادهسازی هدرهای سفارشی وجود ندارد. اپلیکیشنهای IIS از فایل web.config مرکزی برای پیکربندی استفاده میکنند. برای IIS 7.0 و بالاتر نمونه پیکربندی فایل web.config زیر، ریدایرکت از HTTP امن به HTTPS را با HSTS فعال برای HTTPS انجام میدهد:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" />
</rule>
</rules>
<outboundRules>
<rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security"
pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000; includeSubDomains; preload" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
در این مقاله آموختیم که HSTS یک Policy پیشرفته برای سایت است که به افزایش امنیت کاربران وبسایت کمک میکند. معمولا در صورت استفاده از سرویس SSL غیرمعتبر هکرها بهراحتی میتوانند این گواهی را حذف کرده و دادههای کاربران را به سرقت برند. ازهمینرو توصیه میکنیم برای افزایش امنیت دادههای کاربران نصب و استفاده از پروتکل HSTS را در اولویت قرار دهید.
منابع: وبسایت cio.gov / مقاله کلادفلر / مقاله موزیلا