HSTS چیست و چگونه از HTTPS در برابر هکرها محافظت میکند؟
امروزه فعالسازی SSL روی وبسایتها و مشاهده آن قفل سبز رنگ در مرورگر وب، امری ضروری محسوب میشود. با این وجود موارد دیگری نیز به جز این وجود دارند که باید انجام داد. HSTS که اختصار «عبارت امنیت انتقال صریح برای HTTP» یا (HTTP Strict Transport Security) است یکی از این موارد محسوب میشود.
HTTPS چیست؟
پروتکل امن انتقال ابرمتن (HTTPS) نسخه امنی از پروتکل HTTP محسوب میشود. در این پروتکل رمزنگاری با استفاده از پروتکل SSL صورت میگیرد و با گواهیهای SSL نیز تأیید میشود. زمانی که به یک وبسایت HTTPS متصل میشوید، اطلاعاتی که بین وبسایت و کاربر مبادله میشوند، رمزنگاری شدهاند.
این رمزنگاری به حفاظت از کاربر در برابر سرقت دادهها از طریق حملههای مرد میانی (MITM) کمک میکند. این لایه اضافی امنیتی همچنین موجب بهبود اندکی در اعتبار وبسایت شما میشود. در واقع اضافه کردن گواهی SSL کار بسیار آسانی است و بسیاری از شرکتهای میزبانی وب به طور پیشفرض این امکان را به طور رایگان به سایتهای خود اضافه کردهاند. با این وجود HTTPS همچنان برخی اشکالاتی دارد که HSTS آنها را رفع میکند.
HSTS چیست؟
HSTS هدر پاسخی است که به یک مرورگر اطلاع میدهد که وبسایتهای فعال شده تنها میتوانند از طریق HTTPS مورد دسترسی قرار گیرند. این مسئله مرورگر را الزام میکند که تنها به نسخه HTTPS وبسایت و همه منابع روی آن دسترسی یابد.
زمانی که HTTPS را روی وبسایت خود نصب و راهاندازی میکنید، ممکن است حتی اطلاع نداشته باشید که نسخه غیر امن HTTP نیز همچنان در دسترس است. این واقعیت حتی در صورتی که با استفاده از کد 301 اقدام به ریدایرکت دائمی بکنید نیز ممکن است وجود داشته باشد.
با این که سیاست HSTS مدتی است که ارائه شده است؛ اما تا سال 2016 از سوی گوگل به طور رسمی اعلام نشده بود. شاید به همین علت است که تاکنون چیزی در مورد آن نشنیدهاید.
فعالسازی HSTS باعث توقف حملههای پروتکل SSL و هایجک کردن کوکیها میشود که دو مورد از آسیبپذیریهای وبسایتهای دارای SSL محسوب میشوند. همچنین HSTS علاوه بر اینکه باعث میشود وبسایت شما امنتر شود؛ موجب میشود که سایت سریعتر بارگذاری شود و یک مرحله در روال بارگذاری وبسایت کاهش یابد.
SSL Stripping چیست؟
با این که HTTPS بهبود عظیمی در مقایسه با HTTP محسوب میشود؛ اما همچنان در برابر هک شدن آسیبپذیر است. حمله SSL Stripping در هجومهای MITM برای وبسایتهایی که از ریدایرکشن برای ارسال کاربران از نسخه HTTP به HTTPS وبسایت استفاده میکنند کاملاً متداول است.
ریدایرکت کد 301 (دائمی) و 302 (موقت) اساساً به صورت زیر هستند:
- کاربر آدرس google.com را در نوار آدرس مرورگر خود وارد میکند.
- مرورگر در ابتدا سایت http://google.com را به طور پیشفرض بارگذاری میکند.
- وبسایت google.com با ریدایرکت دائمی 301 به https://google.com هدایت میشود.
- مرورگر این ریدایرکت را میبیند و به جای سایت قبلی وبسایت https://google.com را بارگذاری میکند.
در حمله SSL stripping، هکر میتواند از زمان بین مرحله 3 و 4 برای مسدودسازی درخواست ریدایرکت و متوقف کردن بارگذاری نسخه امن وبسایت مرور استفاده کند. سپس شما به یک نسخه ناامن از وبسایت دسترسی مییابید و هر دادهای که ارسال کنید به سرقت خواهد رفت.
هکر همچنین میتواند شما را به نسخهای جعلی از وبسایتی که میخواهید دسترسی بیابید، هدایت کند و همه دادههایی که در آن وبسایت به ظاهر امن وارد میکنید را به سرقت ببرد.
گوگل مراحلی را در مرورگر کروم خود پیادهسازی کرده است که برخی از انواع ریدایرکشن را متوقف میسازد. با این وجود، فعالسازی HSTS چیزی است که پس از این باید به صوت پیشفرض در همه وبسایتها صورت بگیرد.
فعالسازی HSTS چگونه از حمله SSL Stripping جلوگیری میکند؟
فعالسازی SSL Stripping مرورگر را الزام میکند که نسخهای امن از یک وبسایت را بارگذاری کند و هر گونه ریدایرکت و دیگر فراخوانیها برای باز کردن یک اتصال HTTP را نادیده میگیرد. بدین ترتیب آسیبپذیری ریدایرکشن که با کدهای 301 و 302 پدید میآمد، بسته میشود.
با این حال HSTS نیز نکات منفی دارد و آن این است که مرورگر کاربر باید هدر HSTS را دستکم یک بار پیش از آن که بتواند در بازدیدهای بعدی از آن استفاده کند دیده باشد. این بدان معنی است که دستکم یک بار باید فرایند گذار از HTTP > HTTPS را طی کرده باشید و بدین ترتیب نخستین باری که از یک وبسایت با HTTPS بازدید میکنید، همچنان در معرض آسیبپذیری هستید.
برای رفع این اشکال کروم فهرستی از وبسایتهایی که HSTS را فعالسازی کردهاند از پیش بارگذاری میکند. کاربران میتوانند در صورتی که برخی معیارها را داشته باشند، خودشان وبسایتهایی که HSTS روی آنها فعال شده است را در این فهرست از پیش بارگذاری شده وارد کنند:
وبسایتهایی که به این فهرست اضافه میشوند، در نسخههای بعدی بهروزرسانیهای کروم در کد این مرورگر قرار میگیرند. بدین ترتیب اطمینان حاصل میشود که همه افرادی که از وبسایتهای با HSTS فعال در نسخه بهروز شده کروم بازدید میکنند، از این نظر در امنیت خواهند بود.
فایرفاکس، اپرا، سافاری و اینترنت اکسپلورر نیز فهرست HSTS از پیش بارگذاری شده خاص خود را دارند؛ اما فهرست آنها بر مبنای فهرست کروم در وبسایت hstspreload.org است.
چگونه HSTS را روی وبسایت خود فعال کنیم؟
برای فعالسازی HSTS روی وبسایت، ابتدا باید یک گواهی SSL معتبر داشته باشید. اگر HSTS را بدون داشتن یک چنین گواهی فعال کنید، سایت شما از معرض بازدید کاربران خارج میشود، بنابراین باید پیش از ادامه مراحل، اطمینان حاصل کنید که وبسایت شما و همه زیردامنههای آن روی HTTPS کار میکنند.
فعالسازی HSTS کار کاملاً سادهای است. کافی است یک هدر به فایل htaccess. وبسایت خود اضافه کنید. هدری که باید اضافه شود چنین است:
Strict-Transport-Security: max-age=31536000; includeSubDomains
بدین ترتیب یک کوکی دسترسی max-age اضافه میشود که شامل وبسایت شما و همه زیردامنههای آن است. زمانی که مرورگر به وبسایت شما دسترسی مییابد، تا یک سال قادر نخواهد بود که به نسخه HTTP وبسایت شما دسترسی داشته باشد. باید اطمینان حاصل کنید که همه زیردامنههای روی این دامنه در گواهی SSL ذکر شدهاند و دارای HTTPS فعال هستند. اگر این نکته را فراموش کنید، زیردامنههای آن پس از ذخیره کردن فایل htaccess. از دسترسی خارج میشوند.
وبسایتهایی که گزینه includeSubDomains را از هدر فوق حذف میکنند، بازدیدکنندگان را در معرض افشای حریم خصوصی کاربرانشان قرار میدهند، چون زیردامنهها در معرض دستکاری کوکیها خواهند بود. با فعالسازی includeSubDomains، این حملههای مرتبط با کوکی دیگر ممکن نخواهند بود.
نکته: پیش از اضافه کردن مقدار یک سال برای max-age، کل وبسایت خود را ابتدا با استفاده از یک مقدار پنجدقیقهای به صورت max-age=300 تست کنید.
گوگل حتی پیشنهاد میکند که وبسایت و عملکرد (ترافیک) آن را پیش از پیادهسازی max-age دو ساله، با مقدارهای یکهفتهای و یکماهه تست کنید.
Five minutes: Strict-Transport-Security: max-age=300; includeSubDomains One week: Strict-Transport-Security: max-age=604800; includeSubDomains One month: Strict-Transport-Security: max-age=2592000; includeSubDomains
ایجاد فهرست پیش بارگذاری شده HSTS
اکنون شما با HSTS و دلیل اهمیت آن برای وبسایتتان آشنا شدهاید. برای این که بازدیدکنندگان شما از نظر محیط آنلاین در امنیت بمانند، HSTS یک گزینه مهم محسوب میشود.
برای این که صلاحیت ورود به فهرست سایتهای پیش بارگذاری شده HSTS که مرورگر کروم و دیگر مرورگرها مورد استفاده قرار میدهند را کسب کنید، باید وبسایت شما الزامات زیر را داشته باشد:
- یک گواهی SSL معتبر را عرضه کند.
- اگر روی پورت 80 ترافیک دریافت میکنید، HTTP را روی همانهاست به HTTPS ریدایرکت کند.
- همه زیردامنه ها روی HTTPS عرضه شوند. به خصوص در صورتی که یک رکورد DNS برای زیردامنهای مانند www.subdomain داشته باشید، باید از HTTPS برای آن زیردامنه استفاده کرده باشید.
- یک هدر HSTS را روی دامنه اصلی برای درخواست HTTPS زیر عرضه کنید:
- max-age باید دستکم 31536000 ثانیه (1 سال) باشد.
- شامل دایرکتیو includeSubDomains باشد.
- دایرکتیو از پیش بارگذاری شده باید تعیین شده باشد.
- اگر یک ریدایرکت اضافی از سایت HTTPS عرضه میکنید، این ریدایرکت باید همچنان هدر HSTS را داشته باشد (علاوه بر صفحهای که به آن ریدایرکت میشود).
اگر میخواهید وبسایت خود را به فهرست از پیش بارگذاری شده HSTS اضافه کنید، باید اطمینان حاصل کنید که تگ preload لازم را اضافه کردهاید. گزینه preload اعلام میکند که شما میخواهید وبسایتتان به فهرست پیش بارگذاری شده HSTS کروم اضافه شود. هدر پاسخ در فایل htaccess. باید مانند زیر باشد:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
ما توصیه میکنیم که وبسایت خود را به hstspreload.org اضافه کنید. الزامات مورد اشاره فوق کاملاً ساده هستند و به حفاظت از بازدیدکنندگان وبسایت کمک میکنند و به طور بالقوه موجب بهبود رتبه وبسایت شما در موتورهای جستجو میشوند.
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای علوم کامپیوتر
- مجموعه آموزشهای ابزارها و راهکارهای مدیریت وبسایتها
- تنظیم و راه اندازی SSL روی یک وبسایت — به زبان ساده
- گواهی های SSL وایلدکارد Let’s Encrypt با استفاده از اعتبارسنجی کلودفلیر روی CentOS 7
- ۷ دلیل برای این که از گواهی امنیتی SSL برای وبسایت خود استفاده کنید
==
سلام
برای ساب دامنههایی مثل ftp و mail و … هم لازمه که گواهینامه ssl فعال بشه؟
سلام و وقت بخیر
بنده سایت فروش محصولات دانلودی دارم و فایل های دانلود روی هاست دانلود قرار گرفته اند
ssl هم روی هاست اصلیم فعال شده
از افزونه realy simple ssl برای ریدایرکت 301 هم استفاده کرده ام
الان از من می خواهد که hsts رو فعال کنه . آیا با اینکار لینک محصولاتی که روی هاست دانلود هستند دچار مشکل نمیشه؟
سلام
یک چیز را توضیح کامل نداده اید
بعد از یک سال ما باید تغییری در فایل .htaccess بدیم یا کاری انجام بدیم؟ چون این دستور به مدت یک سال اجرایی می شود اگر قبل یک سال هاست را تغییر بدیم یا در همین هاست یک سال طی شود باید کار دیگری انجام داد؟
سلام و وقت بخیر دوست عزیز.
کاری که ما در فایل htaccess انجام میدهیم، تنظیم یک کوکی در سمت کلاینت است. بنابراین هربار که کاربر به هر دلیلی کوکیهای مرورگر را پاک کند و یا یک سال از فعال شدن کوکی گذشته باشد، دوباره renew خواهد شد و از این حیث جای نگرانی وجود ندارد.
از توجه شما متشکریم.