
HSTS چیست؟ چگونه اچ اس تی اس را در وردپرس فعال کنیم؟
HSTS یکی از هدرهای امنیتی HTTP است که به مرورگر اعلام میکند یک سایت را فقط از طریق اتصال امن HTTPS باز کند و سراغ نسخه HTTP آن نرود. نکته مهم اینجاست که HTTPS بهتنهایی همیشه جلوی تلاش برای برقراری اتصال اولیه با HTTP را نمیگیرد. HSTS این بخش را پوشش میدهد و با وادارکردن […]
HSTS چیست؟ چگونه اچ اس تی اس را در وردپرس فعال کنیم؟
HSTS یکی از هدرهای امنیتی HTTP است که به مرورگر اعلام میکند یک سایت را فقط از طریق اتصال امن HTTPS باز کند و سراغ نسخه HTTP آن نرود. نکته مهم اینجاست که HTTPS بهتنهایی همیشه جلوی تلاش برای برقراری اتصال اولیه با HTTP را نمیگیرد. HSTS این بخش را پوشش میدهد و با وادارکردن مرورگر به استفاده از HTTPS، سطح امنیت ارتباط کاربران با سایت را بیشتر میکند.
در این مقاله از مجله پارس هاست، ضمن پاسخ جامع به این سوال که HSTS چیست، نحوه کار این هدر، مقدار max-age، گزینه includeSubDomains و ویژگی preload را بررسی میکنیم. همچنین در این بلاگ از پارس هاست، درباره تفاوت HSTS با HTTPS و نکاتی که قبل از فعالسازی HSTS باید بررسی کنید، توضیح میدهیم.

هدر Strict-Transport-Security چیست؟
هدر Strict-Transport-Security یا سیاست امنیت انتقال ابرمتن که معمولا با نام HSTS شناخته میشود، یک هدر امنیتی HTTP است که به مرورگر اعلام میکند سایت را فقط از طریق اتصال امن HTTPS باز کند. اگر بخواهیم سادهتر توضیح دهیم که hsts چیست، باید گفت HSTS مرورگر را وادار میکند برای دسترسی به یک دامنه، از HTTPS استفاده کند و درخواستهای HTTP را نپذیرد. اگر با مفهوم HTTPS آشنا نیستید، میتوانید درباره HTTPS چیست بیشتر بخوانید.
وقتی سرور این هدر را ارسال میکند، مرورگر برای مدت مشخصی که در مقدار max-age تعیین میشود، درخواستهای HTTP سایت را به سیاست امنیتی HSTS منتقل میکند. در این حالت، حتی اگر کاربر آدرس سایت را با http:// وارد کند، مرورگر ابتدا نسخه امن و استاندارد HTTPS را درخواست میکند.
نمونه هدر HSTS:
Strict-Transport-Security: max-age=31536000; includeSubDomains
در این مثال:
- max-age=31536000 یعنی مرورگر برای یک سال استفاده از HTTPS را اجباری میکند.
- includeSubDomains این قانون را برای زیردامنههای سایت هم اعمال میکند.
HSTS جلوی حملههایی مثل SSL Stripping را میگیرد. حملهای که در آن مهاجم تلاش میکند ارتباط اولیه کاربر با سایت را از HTTPS به HTTP تغییر دهد.
وبسایت Cloudflare، یکی از منابع شناختهشده در حوزه زیرساخت، CDN و امنیت وب نقل میکند:
“HSTS protects HTTPS web servers from downgrade attacks. These attacks redirect web browsers from an HTTPS web server to an attacker-controlled server.”
«HSTS از وبسرورهای HTTPS در برابر حملات Downgrade محافظت میکند. در این حملات، مرورگر کاربر از یک وبسرور HTTPS به سروری که تحت کنترل مهاجم است هدایت میشود.»
موضوع مهم این است که HSTS فقط زمانی اثر دارد که سایت از قبل با HTTPS در دسترس باشد و سرور این هدر را از طریق یک اتصال HTTPS معتبر ارسال کند.

max-age چه کاربردی دارد؟
اگر بخواهیم درک دقیقتری از این موضوع داشته باشیم که پروتکل hsts چیست و چگونه کار میکند، باید با پارامتر max-age آشنا شویم. max-age در هدر HSTS مشخص میکند مرورگر چه مدت باید قانون استفاده اجباری از HTTPS را نگه دارد.
مثلا اگر هدر سایت این باشد:
Strict-Transport-Security: max-age=31536000
عدد ۳۱۵۳۶۰۰۰ برحسب ثانیه است و تقریبا برابر با یک سال میشود. مرورگر در این مدت، سایت را فقط از طریق HTTPS باز میکند.
چند مثال
| مقدار max-age | مدت تقریبی |
| ۳۰۰ | ۵ دقیقه |
| ۸۶۴۰۰ | ۱ روز |
| ۲۵۹۲۰۰۰ | ۳۰ روز |
| ۳۱۵۳۶۰۰۰ | ۱ سال |
| ۶۳۰۷۲۰۰۰ | ۲ سال |
نکته مهم: max-age مدت اعتبار گواهی SSL نیست. این مقدار فقط مدت زمانی را مشخص میکند که مرورگر باید سیاست HSTS را برای دامنه رعایت کند.
مثلا:
Strict-Transport-Security: max-age=31536000; includeSubDomains
یعنی مرورگر تا یک سال آینده، اتصال HTTP به این دامنه را امن نمیداند و از HTTPS استفاده میکند.
چه زمانی از includeSubDomains استفاده میشود؟
includeSubDomains زمانی استفاده میشود که بخواهید قانون HSTS برای تمام زیردامنههای سایت هم اجرا شود.
فرض کنید دامنه اصلی شما این است:
example.com
و چند زیر دامنه دارید:
www.example.com
panel.example.com
blog.example.com
api.example.com
اگر هدر شما این باشد:
Strict-Transport-Security: max-age=31536000; includeSubDomains
مرورگر استفاده از HTTPS را برای دامنه اصلی و زیردامنههای آن اجباری میکند.
اگر هنوز برای سایت خود زیردامنهای ایجاد نکردهاید، ابتدا مراحل ایجاد ساب دامین را انجام دهید و سپس درباره فعالسازی includeSubDomains تصمیم بگیرید.
preload چیست و چه تفاوتی با HSTS معمولی دارد؟
preload یک گزینه در HSTS است که باعث میشود دامنه شما در لیست HSTS Preload مرورگرها قرار بگیرد. تفاوت اصلی آن با HSTS معمولی این است که مرورگر برای شناخت HSTS، در حالت معمول باید حداقل یکبار هدر HSTS را از سایت دریافت کند؛ اما در حالت preload، مرورگر از قبل میداند که دامنه باید فقط با HTTPS باز شود.
فرض کنید این هدر را روی سایت قرار دهید:
Strict-Transport-Security: max-age=31536000
کاربر برای اولینبار با آدرس زیر وارد سایت میشود:
http://example.com
اگر مرورگر هنوز HSTS این دامنه را در حافظه نداشته باشد، ممکن است ابتدا درخواست HTTP را ارسال کند. بعد از دریافت هدر HSTS از طریق HTTPS، مرورگر قانون را ذخیره میکند و از آن به بعد HTTP را برای مدت تعیینشده قبول نمیکند. پس یک نقطه شروع بدون HSTS وجود دارد.
با preload، دامنه در یک فهرست داخلی مرورگرها قرار میگیرد. مرورگر قبل از اولین اتصال هم میداند که این دامنه باید فقط از HTTPS استفاده کند.
برای فعالسازی preload معمولا هدر به این شکل نوشته میشود:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
در این حالت این موارد صدق میکند:
- max-age مدت اجرای سیاست HSTS را مشخص میکند.
- includeSubDomains سیاست را به زیردامنهها هم گسترش میدهد.
- preload نشان میدهد دامنه برای قرارگرفتن در فهرست HSTS Preload آماده است.
تفاوت HSTS معمولی و preload
در این جدول، تفاوت HSTS معمولی و preload قابل مشاهده است:
| ویژگی | HSTS معمولی | HSTS با preload |
| اجبار HTTPS | بله | بله |
| نیاز به دریافت اولیه هدر HSTS | بله | خیر، برای دامنههای موجود در فهرست |
| محافظت در اولین اتصال | محدود | قویتر |
| نیاز به ثبت دامنه در فهرست preload | خیر | بله |
| مناسب برای | بیشتر سایتهای HTTPS | سایتهایی که HTTPS را بهصورت کامل و دائمی اجرا میکنند |
نکته مهم: صرف اضافهکردن preload به هدر، دامنه را بهصورت خودکار وارد فهرست مرورگرها نمیکند. دامنه باید شرایط لازم را داشته باشد و در سرویس HSTS Preload ثبت شود.
preload را نباید بدون بررسی فعال کنید. چون بعد از ورود دامنه به فهرست، تغییر وضعیت HTTPS یا بازگرداندن سایت به HTTP احتمال دارد دردسر جدی ایجاد کند.
فعال کردن HSTS در وردپرس
برای این که بتوانید HSTS را در وردپرس خود فعال کنید، باید یک هدر جدید در بین درخواست هایی که از سمت سرور برای مرورگر کاربر ارسال شود، وجود داشته باشد. برای انجام این کار کافی است با توجه به وب سرور سایت خود، از این دو روش زیر استفاده نمایید.

1) فعالسازی در وب سرور آپاچی و لایت اسپید
برای فعال سازی HSTS در وب سرور آپاچی و لایت اسپید که برای ۹۹ درصد سایتها مناسب است، فقط کافی است روی فایل منیجر هاست خود کلیک کنید و وارد آن شوید. فایل منیجر هاست در سی پنل و دایرکت ادمین با نام FileManager قابل مشاهده است.
پس از وارد شدن به فایل منیجر، پوشه public_html را باز کنید. سپس برای ویرایش فایل htaccess اقدام کرده و کد زیر را در این فایل ثبت کنید:
<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>
۲) فعال کردن HSTS در وب سرور NGINX
در صورتی که از وب سرور انجین ایکس استفاده میکنید، نحوه فعال کردن 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 چه نکاتی را بررسی کنیم؟
قبل از نصب HSTS باید مطمئن شوید تمام بخشهای سایت و سرویسهای وابسته با HTTPS بهدرستی کار میکنند. در واقع، دانستن اینکه hsts چیست بهتنهایی کافی نیست. پیش از فعالسازی آن باید وضعیت SSL/TLS، زیردامنهها، ریدایرکتها و محتوای سایت را هم بررسی کنید.

HSTS فقط یک تغییر ساده در هدرهای HTTP نیست؛ اگر اشتباه تنظیم شود، دسترسی کاربران به بعضی بخشهای سایت قطع میشود.
توجه داشته باشید پیش از فعالسازی HSTS، مطمئن شوید اتصال دامنه به هاست بهدرستی انجام شده و دامنه به سروری اشاره میکند که گواهی SSL روی آن فعال است.
۱. فعالبودن HTTPS در تمام صفحات
تمام صفحات مهم سایت باید با HTTPS در دسترس باشند. گواهی SSL/TLS هم باید معتبر باشد و خطای Certificate در مرورگر نمایش ندهد.
۲. بررسی زیردامنهها
اگر قصد استفاده از includeSubDomains را دارید، مطمئن شوید تمام زیردامنهها HTTPS دارند. وجود حتی یک زیردامنه با HTTP میتواند باعث اختلال در دسترسی شود.
۳. بررسی محتوای Mixed Content
فایلهایی مانند CSS، JavaScript، تصویر و فونت نباید با HTTP در صفحات HTTPS بارگذاری شوند. پیش از فعالسازی HSTS، خطاهای Mixed Content را شناسایی و اصلاح کنید.
۴. بررسی ریدایرکت HTTP به HTTPS
تمام آدرسهای HTTP باید به نسخه HTTPS منتقل شوند و ریدایرکت صفحات و مسیرهای مهم سایت بهدرستی کار کند.
۵. ابتدا با max-age کوتاه شروع کنید
برای اولین تست، بهتر است HSTS را با مدت کوتاه فعال کنید:
Strict-Transport-Security: max-age=300
اگر همهچیز درست بود، مقدار max-age را به مدت طولانیتر افزایش دهید؛ برای نمونه:
Strict-Transport-Security: max-age=31536000
مستقیم سراغ مقدارهای طولانی نروید. اگر تنظیمات اشتباه باشد، مرورگر ممکن است تا پایان مدت تعیینشده HTTPS را اجباری کند.
۶. برای includeSubDomains احتیاط بیشتری داشته باشید
اگر مطمئن نیستید تمام زیردامنهها HTTPS دارند، فعلا این گزینه را اضافه نکنید:
Strict-Transport-Security: max-age=31536000
بعد از بررسی کامل زیردامنهها میتوانید سراغ این تنظیم بروید:
Strict-Transport-Security: max-age=31536000; includeSubDomains
۷. preload را مرحله آخر بدانید
فعالکردن preload تصمیم جدیتری است. قبل از آن باید مطمئن شوید:
- تمام دامنه و زیردامنهها HTTPS دارند.
- ریدایرکتهای HTTP درست هستند.
- SSL/TLS همه سرویسها معتبر است.
- سایت در آینده هم قرار نیست به HTTP برگردد.
آیا HSTS برای سایت شما مناسب است؟
فعالسازی HSTS زمانی انتخاب مناسبی است که تمام بخشهای سایت و سرویسهای وابسته از طریق HTTPS بهدرستی کار کنند. اگر صفحات، زیردامنهها، ریدایرکتها و گواهی SSL/TLS مشکلی نداشته باشند، HSTS میتواند مرورگر را به استفاده از اتصال امن وادار کند و امنیت ارتباط کاربران با سایت را افزایش دهد.
نکته پایانی: HSTS نباید بدون بررسی تنظیمات سایت فعال شود. بهتر است ابتدا با یک مقدار کوتاه برای max-age شروع کنید و بعد از اطمینان از عملکرد صحیح سایت، مدت آن را افزایش دهید. استفاده از includeSubDomains و preload نیز نیاز به بررسی دقیقتری دارد، چون در صورت وجود مشکل در یکی از زیردامنهها یا سرویسها میتواند دسترسی کاربران را مختل کند.
جهت آخرین یادآوری در نظر داشته باشید HSTS جایگزین HTTPS نیست، بلکه استفاده از HTTPS را برای مرورگر اجباریتر میکند. بنابراین اگر سایت شما بهطور کامل روی HTTPS اجرا میشود و قرار نیست به HTTP برگردد، HSTS میتواند یک لایه امنیتی مناسب برای آن باشد.
سوالات متداول
۱. HSTS چیست؟
HSTS یک هدر امنیتی HTTP است که به مرورگر اعلام میکند سایت را فقط از طریق HTTPS باز کند و از اتصال HTTP جلوگیری کند.
۲. آیا HSTS باعث میشود HTTP به HTTPS ریدایرکت شود؟
HSTS خودش ریدایرکت HTTP را روی سرور انجام نمیدهد. مرورگر بعد از فعالشدن HSTS، درخواست HTTP را قبل از ارسال به سرور به HTTPS تبدیل میکند.
۳. آیا HSTS روی سئو تاثیر دارد؟
HSTS بهصورت مستقیم یک فاکتور رتبهبندی شناختهشده برای گوگل نیست، اما به امنیت اتصال سایت کمک میکند و در کنار HTTPS، تجربه امنتری برای کاربران ایجاد میکند.
۰