قبل از اینکه بخواهیم در رابطه با موضوع HSTS توضیح دهیم و به شما توضیح دهیم که HSTS چیست؟ باید در رابطه با آن توضیح دهیم، نیاز است که بدانید اول HTTPS چیست؟
HTTPS چیست؟
پروتکل
HTTPS یک نسخه امن از یک وب سایت HTTP است. این رمزگذاری با استفاده از پروتکل Secure Sockets Layer (SSL) فعال می شود، بدون HTTPS دادههایی که بین سرور و مرورگر رد و بدل میشوند، ناامن خواهند بود.
این رمزگذاری به شما کمک می کند تا از داده ها در مقابل سرقت اطلاعات از طریق روش Man-in-the-Middle-Attack (MITM) محافظت کنید. لایه امنیتی اضافه شده نیز به بهبود وضعیت وب سایت شما در موتورهای جستجو هم کمک می کند. گفته می شود ، HTTPS هنوز نقص هایی دارد که HSTS می تواند به رفع آن کمک کند.
HSTS چیست؟
HSTS هدر پاسخی است که به یک مرورگر اطلاع میدهد که وبسایتهای فعال شده تنها میتوانند از طریق HTTPS مورد دسترسی قرار گیرند. این مسئله مرورگر را الزام میکند که تنها به نسخه HTTPS وبسایت و همه منابع روی آن دسترسی یابد.
زمانی که HTTPS را روی وبسایت خود نصب و راهاندازی میکنید، ممکن است حتی اطلاع نداشته باشید که نسخه غیر امن HTTP نیز همچنان در دسترس است. این واقعیت حتی در صورتی که با استفاده از کد 301 اقدام به ریدایرکت دائمی بکنید نیز ممکن است وجود داشته باشد.
با این که سیاست HSTS مدتی است که ارائه شده است؛ اما تا سال 2016 از سوی گوگل به طور رسمی اعلام نشده بود. شاید به همین علت است که تاکنون چیزی در مورد آن نشنیدهاید.
فعالسازی HSTS باعث توقف حملههای پروتکل SSL و هایجک کردن کوکیها میشود که دو مورد از آسیبپذیریهای وبسایتهای دارای SSL محسوب میشوند. همچنین HSTS علاوه بر اینکه باعث میشود وبسایت شما امنتر شود؛ موجب میشود که سایت سریعتر بارگذاری شود و یک مرحله در روال بارگذاری وبسایت کاهش یابد.
HSTS چگونه کار می کند؟
به طور معمول ، هنگامی که یک URL را در مرورگر وب وارد می کنید ، قسمت پروتکل را رد می کنید. به عنوان مثال ، شما www.iranserver.com را تایپ می کنید ، نه http://www.iranserver.com. در چنین حالتی ، مرورگر فرض می کند که شما می خواهید از پروتکل HTTP استفاده کنید ، بنابراین یک درخواست HTTP را به www.iranserver.com ارسال می کند.
در این مرحله ، وب سرور با یک تغییر مسیر (کد پاسخ ۳۰۱) که به سایت HTTPS اشاره می کند پاسخ می دهد. مرورگر اتصال HTTPS به www.iranserver.com ایجاد می کند. این زمانی است که حفاظت از خط مشی امنیتی HSTS با استفاده از یک هدر پاسخ HTTP شروع می شود:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
هدر Strict-Transport-Security دستورالعمل های خاصی به مرورگر می دهد. از زمان اضافه کردن این کدها ، هر اتصال به سایت و زیر دامنه های آن برای یک سال آینده (۳۱۵۳۶۰۰۰ ثانیه) از لحظه دریافت این هدر باید یک اتصال HTTPS باشد. اتصالات HTTP به هیچ وجه مجاز نیست. اگر مرورگر درخواست بارگیری یک منبع را با استفاده از HTTP دریافت کند ، باید به جای آن درخواست HTTPS را امتحان کند. اگر HTTPS در دسترس نباشد ، اتصال باید خاتمه یابد.
علاوه بر این ، اگر گواهی معتبر نباشد ، از ایجاد ارتباط جلوگیری می شود. معمولاً اگر گواهی معتبر نباشد (منقضی شده ، self-signed باشد ، توسط یک CA ناشناخته امضا شده باشد و غیره) مرورگر هشداری را نشان می دهد که می توانید دور بزنید. اما اگر سایت دارای HSTS باشد ، مرورگر به هیچ وجه به شما اجازه نمی دهد هشدار را دور بزنید. برای دسترسی به سایت ، باید سایت را از لیست HSTS در داخل مرورگر حذف کنید.
هدر Strict-Transport-Security برای وب سایت مشخصی ارسال می شود و نام دامنه خاصی را در بر می گیرد. بنابراین ، اگر هدر HSTS برای www.iranserver.com را دارید ، این هدر فقط زیر دامنه www. را پوشش میدهد و آدرس iranserver.com را پوشش نمی دهد. به همین دلیل ، برای محافظت کامل، وب سایت شما باید دامنه پایه (در این مورد ، iranserver.com) را در بر بگیرد و یک هدر Strict-Transport-Security برای آن دامنه با includeSubDomains دریافت کند.
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 است.
بهبود SEO و افزایش سرعت سایت با استفاده از HSTS
علاوه بر افزودن یک لایه امنیتی بیشتر به سایت شما ، استفاده از HSTS ممکن است باعث افزایش SEO شود زیرا استفاده از HSTS باعث می شود صفحات وب شما حتی سریعتر بارگیری شود.
زمان بارگذاری اولیه در رتبه بندی جستجو و هم از لحاظ افزایش رضایت بازدید کننده سایت شما بسیار موثر است . با افزایش استفاده از موبایل و ابتکار عمل گوگل سرعت بارگذاری اولیه صفحه از اهمیت بیشتری نیز برخوردار شد.