HSTS คืออะไร?

HSTS เป็นส่วนหัวตอบกลับความปลอดภัยของเว็บ ชื่อนี้ย่อมาจาก “HTTP Strict Transport Security” หน้าที่ของส่วนหัว HSTS คือการบังคับให้เบราว์เซอร์เชื่อมต่อกับเว็บไซต์โดยใช้ HTTPS

เคล็ดลับ: HTTPS ใช้การเข้ารหัสเพื่อรักษาความปลอดภัยการเชื่อมต่อเว็บของคุณจากแฮกเกอร์ที่พยายามแก้ไขหรือตรวจสอบ HTTP ไม่มีการป้องกันเหล่านี้ ดังนั้นแฮ็กเกอร์ในตำแหน่งที่เหมาะสมจึงสามารถตรวจสอบและแก้ไขการรับส่งข้อมูล HTTP ของคุณได้

ส่วนหัวของการตอบสนองทางเว็บคือชิ้นส่วนของข้อมูลเมตาที่ส่งโดยเซิร์ฟเวอร์เมื่อตอบสนองต่อคำขอของเว็บ ส่วนย่อยของส่วนหัวเหล่านี้มักถูกเรียกว่าส่วนหัวความปลอดภัย เนื่องจากมีวัตถุประสงค์เพื่อเพิ่มความปลอดภัยให้กับเว็บไซต์และผู้ใช้

ส่วนหัว HSTS มีส่วนบังคับสองส่วนและส่วนเสริมสองส่วน ชื่อส่วนหัว "Strict-Transport-Security" ตามด้วยโอเปอเรเตอร์และค่า "max-age" เป็นค่าบังคับ บางครั้งมีการใช้โอเปอเรเตอร์อีกคู่ "includeSubDomains" และ "preload"

เมื่อเบราว์เซอร์ได้รับการตอบสนอง HTTPS ด้วยส่วนหัว HSTS จะได้รับคำแนะนำให้เชื่อมต่อกับเว็บไซต์นี้และทรัพยากรทั้งหมดบนเว็บไซต์ โดยใช้ HTTPS เฉพาะในช่วงเวลาของตัวจับเวลา "อายุสูงสุด" “อายุสูงสุด” เป็นตัวแปรที่อธิบายระยะเวลาที่เบราว์เซอร์ต้องจดจำการตั้งค่า ค่าของ "อายุสูงสุด" แสดงเป็นวินาที ค่าที่แนะนำคือ "31536000" ซึ่งก็คือหนึ่งปี

แนวคิดก็คือภายในระยะเวลาของตัวจับเวลานี้ ซึ่งถูกรีเซ็ตทุกครั้งที่โหลดหน้าถัดไป เบราว์เซอร์จะต้องเชื่อมต่อ HTTPS และปฏิเสธทรัพยากร HTTP ใดๆ ซึ่งป้องกันการโจมตีจากบุคคลที่อยู่ตรงกลาง ซึ่งแฮ็กเกอร์ระหว่างคุณกับเว็บเซิร์ฟเวอร์สามารถจัดการการตอบกลับที่คุณได้รับ

ประเด็นหลักที่สิ่งนี้ปกป้องคุณคือการเชื่อมต่อครั้งแรก โดยปกติ เมื่อคุณเชื่อมต่อกับเว็บไซต์ คุณสามารถขอเว็บไซต์ HTTP แล้วส่งต่อไปยังเว็บไซต์ HTTPS ขออภัย แฮ็กเกอร์ในตำแหน่งบุคคลที่อยู่ตรงกลางสามารถป้องกันการอัปเกรดเป็น HTTPS นี้ และอาจขโมยหรือตรวจสอบกิจกรรมของคุณบนเว็บไซต์ได้ อย่างไรก็ตาม เมื่อเบราว์เซอร์มองเห็นส่วนหัว HSTS แล้ว เบราว์เซอร์ของคุณจะทำการเชื่อมต่อผ่าน HTTPS เป็นครั้งแรก เพื่อปกป้องคุณจากแฮกเกอร์

HSTS ยังป้องกันทรัพยากรที่ไม่ปลอดภัยจากการโหลด ซึ่งผู้โจมตีอาจถูกแก้ไขโดยประสงค์ร้ายหากส่งผ่าน HTTP

ตัวดำเนินการ "includeSubDomains" ใช้เพื่อระบุว่าส่วนหัวควรนำไปใช้กับโดเมนย่อยทั้งหมดของเว็บไซต์ด้วย

รายการโหลดล่วงหน้า HSTS

คุณอาจสังเกตเห็นว่า HSTS ยังคงไม่ปกป้องคุณในครั้งแรกที่คุณเชื่อมต่อกับเว็บไซต์ นี่คือที่มาของโอเปอเรเตอร์ "พรีโหลด" เว็บไซต์สามารถส่งตัวเองให้รวมอยู่ในรายการโหลดล่วงหน้า HSTS ตัวดำเนินการ "โหลดล่วงหน้า" เป็นตัวบ่งชี้ที่จำเป็นหากเป็นกรณีนี้ รายการโหลดล่วงหน้า HSTS จะได้รับการอัปเดตและจัดเก็บไว้ในเบราว์เซอร์เป็นประจำ หากมีไซต์รวมอยู่ในนั้น เบราว์เซอร์จะใช้การป้องกัน HSTS กับไซต์นั้น สิ่งนี้เกิดขึ้นแม้กระทั่งในการเชื่อมต่อครั้งแรกก่อนที่เบราว์เซอร์จะได้เห็นส่วนหัวการตอบสนอง HSTS

เคล็ดลับ: ต้องเพิ่ม “อายุสูงสุด” หนึ่งปีขึ้นไปในรายการโหลดล่วงหน้า HSTS

ปัญหาเกี่ยวกับHSTS

ประเด็นหลักของ HSTS ประการหนึ่งคือจะแสดงข้อความแสดงข้อผิดพลาดหากมีปัญหาใดๆ กับการเชื่อมต่อ HTTPS เพื่อเป็นการป้องกันความปลอดภัยเพิ่มเติม ผู้ใช้ไม่ควรจะสามารถเลี่ยงผ่านข้อความแสดงข้อผิดพลาด HSTS ได้ เนื่องจากพวกเขาสามารถทำได้โดยมีข้อผิดพลาด HTTPS ตามปกติ

น่าเสียดายที่สิ่งนี้อาจทำให้เกิดปัญหาได้หากบริษัทเปิดตัว HSTS ก่อนทั้งเว็บไซต์ และทุกทรัพยากรที่ใช้ในนั้นรองรับ HTTPS ในกรณีนี้ ผู้ใช้จะเริ่มเห็นข้อความแสดงข้อผิดพลาดด้านความปลอดภัย HSTS ที่พวกเขาไม่สามารถเลี่ยงผ่าน ซึ่งจะทำให้เว็บไซต์เสียหายโดยสิ้นเชิง ส่วนที่แย่ที่สุดคือการนำส่วนหัว HSTS ออกไม่ได้ช่วยแก้ปัญหาสำหรับผู้ใช้เหล่านั้น เนื่องจากเบราว์เซอร์จะยังคงบังคับใช้ HSTS สำหรับ "อายุสูงสุด" ที่อาจใช้เวลานานหลายเดือน

ดังนั้น จึงเป็นสิ่งสำคัญอย่างยิ่งที่ต้องใช้ “อายุสูงสุด” สั้นๆ เมื่อปรับใช้ส่วนหัวในครั้งแรก หากมีปัญหาใดๆ แสดงว่าปัญหาดังกล่าวยังคงอยู่ในช่วงเวลาสั้นๆ เมื่อตรวจพบ เมื่อคุณมั่นใจว่าเว็บไซต์ของคุณเป็นไปตาม HSTS อย่างสมบูรณ์แล้ว คุณควรกำหนดค่าตัวจับเวลา HSTS แบบยาว

เคล็ดลับ: นอกจากนี้ยังสามารถตั้งค่า "อายุสูงสุด" เป็น 0 ซึ่งจะลบรายการ HSTS ที่บันทึกไว้ออกจากใครก็ตามที่เห็น สิ่งนี้สามารถช่วยได้หากมีปัญหา แต่จะมีผลกับผู้ใช้เมื่อและหากพวกเขาตัดสินใจลองอีกครั้งเท่านั้น