HSTS چیست

HSTS چیست : HSTS مخفف HTTP Strict Transport Security است. این روشی است که وب سایت ها اعلام می کنند فقط باید از طریق اتصال ایمن (HTTPS) به آنها دسترسی داشته باشید.با فعال کردن HSTS ، حملات پروتکل SSL و ربودن کوکی ، دو آسیب پذیری که در وب سایت های دارای SSL ممکن است رخ دهد، متوقف می شود. علاوه بر ایمن تر کردن وب سایت ، HSTS باعث بارگذاری سریعتر سایت نیز می شود. HSTS در حال حاضر توسط اکثر مرورگرهای اصلی پشتیبانی می شود (فقط برخی از مرورگرهای تلفن همراه قادر به استفاده از آن نیستند).
HTTP Strict Transport Security به عنوان یک استاندارد امنیت وب در سال ۲۰۱۲ در RFC 6797 تعریف شده است. هدف اصلی ایجاد این استاندارد کمک به جلوگیری از حملات مرد در میانه (MITM) است که از حذف SSL استفاده می کنند. SSL stripping روشی است که در آن مهاجم مجبور می شود مرورگر را با استفاده از HTTP به یک سایت متصل کند تا بتواند بسته ها را شناسایی کند و اطلاعات حساس را رهگیری یا اصلاح کند. HSTS همچنین روش خوبی برای محافظت از خود در برابر ربودن کوکی است.
HSTS چگونه کار می کند
به طور معمول ، وقتی URL را در مرورگر وارد می کنید ، قسمت پروتکل را وارد نمی کنید. به عنوان مثال ، شما www.zoodweb.com را تایپ می کنید ، نه http://www.zoodweb.com. در چنین حالتی ، مرورگر تصور می کند که شما می خواهید از پروتکل HTTP استفاده کنید بنابراین درخواست HTTP را به آدرس www.zoodweb.com ارائه می دهد.
در این مرحله ، وب سرور با یک تغییر مسیر (۳۰۱ response code) که به سایت HTTPS اشاره می کند ، پاسخ می دهد. مرورگر اتصال HTTPS را به www.zoodweb.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.zoodweb.com داشته باشید ، این zoodweb.com را پوشش نمی دهد بلکه فقط زیر دامنه www را پوشش می دهد. به همین دلیل است که ، برای محافظت کامل ، وب سایت شما باید به دامنه پایه (در این مورد zoodweb.com) فراخوانی کند و یک عنوان Strict-Transport-Security برای آن دامنه با دستورالعمل includeSubDomains دریافت کند.
آیا HSTS کاملاً امن است؟
متأسفانه ، اولین باری که به وب سایت دسترسی پیدا می کنید ، توسط HSTS محافظت نمی شوید. اگر وب سایت یک هدر HSTS به اتصال HTTP اضافه کند ، آن هدر نادیده گرفته می شود. این به این دلیل است که یک مهاجم می تواند در هنگام حمله مرد میانی(man-in-the-middle) ، هدرها را حذف یا اضافه کند. هدر HSTS قابل اعتماد نیست مگر اینکه از طریق HTTPS تحویل داده شود.
می توانید از روش دیگری برای حفاظت به نام HSTS preload list استفاده کنید. پروژه Chromium لیستی از وب سایت هایی را که از HSTS استفاده می کنند نگهداری می کند و لیست با مرورگرها توزیع می شود. اگر وب سایت خود را به لیست پیش بارگذاری اضافه کنید ، مرورگر ابتدا لیست داخلی را بررسی می کند و بنابراین حتی در اولین تلاش برای اتصال ، وب سایت شما هرگز از طریق HTTP قابل دسترسی نیست. این روش بخشی از استاندارد HSTS نیست اما توسط همه مرورگرهای اصلی (Chrome ، Firefox ، Safari ، Opera ، IE11 و Edge) استفاده می شود.
تنها روش شناخته شده در حال حاضر که می تواند برای دور زدن HSTS استفاده شود ، حمله مبتنی بر NTP است. اگر کامپیوتر مشتری شرایط لازم برای حمله NTP باشد ، می توان HSTS را منقضی کرد و یکبار با HTTP به سایت دسترسی پیدا کرد.
چگونه دامنه ای را به لیست Preload HSTS اضافه کنیم؟
برای افزودن دامنه به لیست پیش بار HSTS ، سایت های مربوط به آن دامنه باید چندین پیش نیاز را داشته باشند. مواردی که شما برای افزودن دامنه خود باید انجام دهید:
- اطمینان حاصل کنید که سایت های شما گواهی معتبر و رمزگذاری به روز دارند.
- اگر سایت های شما از طریق HTTP در دسترس هستند ، همه درخواست ها را به HTTPS ریدارکت کنید.
- اطمینان حاصل کنید که نقاط ۱ و ۲ بالا در مورد همه دامنه ها و زیر دامنه های شما اعمال می شود (با توجه به سوابق DNS شما).
- هدر Strict-Transport-Security را از HTTPS برای دامنه پایه با حداکثر ۳۱۵۳۶۰۰۰ (۱ سال) ، دستورالعمل includeSubDomains و دستورالعمل پیش بارگذاری ارائه دهید. برای نمونه ای از چنین هدرهای معتبر HSTS به بالا مراجعه کنید.
- به hstspreload.org بروید و دامنه خود را با استفاده از فرم ارسال کنید. در صورت احراز شرایط ، دامنه شما در صف اضافه شدن قرار می گیرد.
برای افزایش امنیت ، فهرست preload توسط مرورگر قابل دسترسی یا دانلود نیست. این به عنوان یک منبع سخت رمزگذاری شده با نسخه های جدید مرورگر توزیع می شود. این به این معنی است که زمان زیادی برای نمایش نتایج در لیست طول می کشد و مدت زمان زیادی طول می کشد تا یک دامنه از لیست حذف شود. اگر می خواهید سایت خود را به لیست اضافه کنید ، باید مطمئن باشید که می توانید دسترسی کامل HTTPS به همه منابع را برای مدت زمان طولانی حفظ کنید. در غیر این صورت ، شما خطر می کنید که وب سایت شما کاملاً غیرقابل دسترسی شود.
چگونه می توان یک دامنه را از Cache HSTS در مرورگر حذف کرد؟
هنگام تنظیم HSTS و امتحان آن ، ممکن است لازم باشد حافظه پنهان HSTS را در مرورگر پاک کنید. اگر HSTS را به اشتباه تنظیم کرده باشید ، ممکن است خطاهایی دریافت کنید که شما را از سایت قفل می کند مگر اینکه داده ها را پاک کنید. در اینجا روش هایی برای چندین مرورگر محبوب آورده شده است. همچنین توجه داشته باشید که اگر دامنه شما در لیست preload HSTS باشد ، پاک کردن حافظه پنهان HSTS بی اثر خواهد بود و راهی برای وادار کردن اتصال HTTP وجود ندارد.
حذف از Google Chrome
برای حذف دامنه از حافظه پنهان Chrome HSTS ، این دستورالعمل ها را دنبال کنید:
– به آدرس chrome://net-internals/#hsts بروید.
– در بخش حذف دامنه های امنیتی دامنه ، دامنه را برای حذف در جعبه متن وارد کنید
– روی دکمه Delete کنار جعبه متن کلیک کنید.
پس از آن ، می توانید بررسی کنید که آیا حذف موفقیت آمیز بود:
– در بخش Query HSTS / PKP domain ، دامنه را وارد کنید تا در جعبه متن تأیید شود
– روی دکمه Query در کنار کادر متن کلیک کنید
– پاسخ باید یافت نشد را نمایش دهد.
حذف از Mozilla Firefox
روشهای مختلفی برای حذف اطلاعات HSTS از Firefox برای یک دامنه مشخص وجود دارد.موارد زیر ساده ترین و سریع ترین مورد است.
– تمام تب های باز سایت خود را ببندید.
– تاریخجه فایرفاکس ( Firefox history) را باز کنید.از قسمت (Library > History > Show All History)
– دامنه را با استفاده از نوار جستجو پیدا کنید.
– روی دامنه کلیک راست کرده و گزینه Forget About This Site را انتخاب کنید.
– فایرفاکس را ریستارت کنید.