احتمالاً تا حالا اسم hsts به گوشتون خورده، اما دقیقاً نمیدونید این مفهوم چی هست و چرا باید حتماً باهاش آشنا بشید. تو این مقالهاز اسیت رامون طالع ، قصد داریم خیلی ساده و دوستانه بگیم hsts چیست، چه مزایایی داره و چطوری میتونید با چند خط کد ساده، امنیت سایتتون رو چند قدم بالاتر ببرید. پس صفحهی .htaccess رو باز کنید و تا آخر همراه ما باشید!
عنوان های این مقاله
hsts چیست و چرا مهمه؟
در اصل، hsts چیست؟
hsts مخفف عبارت HTTP Strict Transport Security هست. وقتی شما این قابلیت رو روی سایتتون فعال میکنید، مرورگرها بهجای اینکه فرصت بدن کاربر گاهی با HTTP (غیر امن) وارد بشه، همیشه اوتوماتیک میفرستنش سمت HTTPS (امن).
اما چرا این کار انقدر مهمه؟
- جلوگیری از حملات مرد میانی (MITM): بدون hsts چیست اصلاً هیچ تضمینی وجود نداره که مرورگر همیشه از HTTPS استفاده کنه. بنابراین هکرها میتونن وسط راه اطلاعات رو شنود یا دستکاری کنن.
- ایجاد حس اعتماد: وقتی کاربر داخل فروشگاه اینترنتی یا پنل کاربری شما رمز یا اطلاعات شخصی مینویسه، با فعال بودن hsts مطمئن میشه که هیچکس نمیتونه اطلاعاتش رو دزدیده یا تغییر بده.
- تسهیل بارگذاری امن: علاوه بر این، hsts باعث میشه لینکهای HTTP خودتون هم خودکار به HTTPS ریدایرکت بشن و دیگه مجبور نباشید برای هر لینکی دستورات ریدایرکت بنویسید.
در حقیقت، hsts یک سپر امنیتی ساده اما قویه که جلوی اکثر حملات ابتدایی روی لایهی انتقال رو میگیره. بنابراین اگر SSL روی سایتتون نصب هست، حتماً باید hsts رو هم فعال کنید.
نحوه فعالسازی HSTS روی htaccess

حالا که فهمیدیم hsts چیست و اهمیتش رو درک کردیم، وقتشه بریم سراغ عمل. فعالسازی HSTS روی اکثر سرورها با ویرایش فایل .htaccess
انجام میشه. در ادامه دو تا دستور اصلی رو میبینید:
کد برای فعالسازی دامنه
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000"
</IfModule>
- این خط به مرورگر میگه یک سال (۳۱۵۳۶۰۰۰ ثانیه) فقط از HTTPS استفاده کنه.
- بنابراین، حتی اگر کسی آدرس HTTP رو دستی وارد کنه، مرورگر خودکار به HTTPS تغییرش میده.
کد برای فعالسازی سابدامنهها
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>
- با اضافه کردن
includeSubDomains
، شما همهی زیرآدرسهای دامنه اصلی رو هم ملزم میکنید که با HTTPS باز بشن. - بد نیست بدونید اگر سابدامنههایی دارید که هنوز گواهی SSL ندارن، در این مرحله اول اونها رو آماده کنید.
نکته مهم درباره Preload
اگر میخواید سایتتون رو وارد لیست Preload مرورگرها کنید یعنی حتی قبل از اولین بازدید، HTTPS اجباری باشه باید ; preload
هم به هدر اضافه کنید:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
سپس به سایت https://hstspreload.org برید و دامنهتون رو ثبت کنید.
نتیجهگیری
حالا دیگه کاملاً میدونید hsts چیست و چطور باید فعالش کنید. یادتون باشه:
- اول SSL نصب و فعال باشه.
- بعد با کدهای بالا هدر HSTS رو به پاسخ سرورتون اضافه کنید.
- در نهایت، اگر دوست دارید از لیست Preload استفاده کنید،
preload
رو هم اضافه کنید و دامنه رو ثبت نمایید.
این کار ساده، یک لایهی امنیتی قوی به سایت شما اضافه میکنه و باعث میشه کاربران با خیال راحتتر اطلاعاتشون رو وارد کنند و شما هم از شنود یا حملات مرد میانی آسودهخاطر باشید.
سوالات متداول
آیا بدون SSL میشه HSTS فعال کرد؟
نه؛ HSTS فقط روی HTTPS کار میکنه و باید گواهی SSL معتبر داشته باشید.
مقدار مناسب max-age چقدر است؟
کافیه max-age=0
بذارید تا مرورگر دیگه HTTPS رو اجبار نکنه.
چطور HSTS رو غیرفعال کنم؟
کافیه max-age=0
بذارید تا مرورگر دیگه HTTPS رو اجبار نکنه.
استفاده از includeSubDomains چه خطرهایی داره؟
اگر بعضی سابدامنهها هنوز SSL ندارن، فعال کردنش باعث میشه دسترسی به اونها قطع بشه.
آیا HSTS روی سرعت بارگذاری تأثیر میذاره؟
خیر؛ چون فقط یک هدر اضافه میکنه و ریدایرکتهای اضافی HTTP رو حذف میکنه، عملاً سرعت رو هم بهتر میکنه.