BBC ได้เปิดตัว HSTS สำหรับเว็บไซต์เพื่อเพิ่มความปลอดภัยและประสิทธิภาพ ดูความหมายของข้อความและดูว่า HSTS จะช่วยคุณได้อย่างไร
มีการใช้ HTTPS เพิ่มขึ้นอย่างต่อเนื่องในช่วงไม่กี่ปีที่ผ่านมา จากในเว็บ Almanac ในปี 2021 ของ HTTP Archive ประมาณ 91% ของคำขอทั้งหมดสำหรับทั้งเดสก์ท็อปและอุปกรณ์เคลื่อนที่นั้นแสดงผ่าน HTTPS HTTPS ไม่ได้มีไว้เพื่อการใช้งานเท่านั้น แต่ยังเป็นข้อกำหนดเบื้องต้นที่จำเป็นสำหรับการใช้ฟีเจอร์ต่างๆ เช่น Service Worker และโปรโตคอลสมัยใหม่อย่าง HTTP/2 และ HTTP/3
เมื่อเร็วๆ นี้ Neil Craig ซึ่งเป็นหัวหน้าสถาปนิกด้านเทคนิคของ BBC ทวีตว่า HTTP Strict Transport Security (HSTS) กำลังทยอยเปิดตัวบน bbc.com ดูว่า BBC จะมีผลอย่างไรต่อ BBC และสิ่งนี้จะส่งผลต่อคุณอย่างไร
ปัญหา
เว็บเซิร์ฟเวอร์มักรอฟังคำขอทั้งพอร์ต 80 และ 443 พอร์ต 80 มีไว้สำหรับคำขอ HTTP ที่ไม่ปลอดภัย ส่วนพอร์ต 443 มีไว้สำหรับ HTTPS ที่ปลอดภัย ซึ่งอาจทำให้เกิดปัญหาได้ เนื่องจากเมื่อคุณป้อนที่อยู่ลงในแถบที่อยู่โดยไม่มีคำนำหน้าโปรโตคอล https://
ดังที่ผู้ใช้ส่วนใหญ่มักทำ บางเบราว์เซอร์จะเปลี่ยนเส้นทางการเข้าชมไปยังเว็บไซต์เวอร์ชัน HTTP ที่ไม่ปลอดภัยด้วยเหตุผลเดิม (แต่อาจไม่เป็นเช่นนี้เสมอไป)
วิธีทั่วไปที่ช่วยให้มั่นใจว่าผู้ใช้ไม่ได้เข้าถึงเว็บไซต์เวอร์ชันที่ไม่ปลอดภัยคือการเปลี่ยนเส้นทาง HTTP-to-HTTPS สำหรับคำขอทั้งหมด วิธีนี้ได้ผลอย่างแน่นอน แต่จะเริ่มจากเหตุการณ์ต่อไปนี้
- เซิร์ฟเวอร์ได้รับคำขอ HTTP
- เซิร์ฟเวอร์ออกการเปลี่ยนเส้นทางเพื่อไปยัง HTTPS ที่เทียบเท่ากับทรัพยากรที่ขอ
- เซิร์ฟเวอร์ต้องเจรจาการเชื่อมต่อที่ปลอดภัยกับเบราว์เซอร์
- เนื้อหาจะโหลดตามปกติ
แม้ว่าการเปลี่ยนเส้นทางจะทำงานได้ดี แต่ก็อาจกำหนดค่าไม่ถูกต้องในลักษณะที่ยังคงอนุญาตการเข้าถึงเว็บไซต์เวอร์ชันที่ไม่ปลอดภัยได้ แม้ว่าทุกอย่างจะได้รับการกำหนดค่าอย่างถูกต้อง แต่ยังมีปัญหาด้านความปลอดภัยอยู่ที่ผู้ใช้จะยังคงเชื่อมต่อผ่าน HTTP ที่ไม่ปลอดภัยในระหว่างการเปลี่ยนเส้นทาง ซึ่งทำให้ผู้ใช้เสี่ยงต่อการโจมตีแบบแทรกกลางการสื่อสารที่เป็นอันตราย
ป้อน HSTS
HSTS จะกำหนดโดยส่วนหัวการตอบกลับ HTTP Strict-Transport-Security
สำหรับคำขอ HTTPS เมื่อตั้งค่าแล้ว การกลับเข้ามาเข้าชมเว็บไซต์จะทริกเกอร์การเปลี่ยนเส้นทางพิเศษที่เรียกว่า "307 Internal Redirect" ซึ่งเป็นการที่เบราว์เซอร์จัดการลอจิกการเปลี่ยนเส้นทาง ไม่ใช่เซิร์ฟเวอร์ วิธีนี้ช่วยป้องกันไม่ให้คำขอถูกดักฟัง เนื่องจากคำขอนี้จะไม่ออกจากเบราว์เซอร์ จึงมีความปลอดภัยมากกว่า ยิ่งไปกว่านั้น การเปลี่ยนเส้นทางประเภทนี้ยังรวดเร็วมาก จึงไม่ต้องเสียเวลาตอบสนองที่สังเกตได้ในระหว่างการรับส่งข้อมูล HTTP-to-HTTPS
![การเปลี่ยนเส้นทางภายใน 307 จาก HTTP ไปยัง HTTPS ซึ่งทริกเกอร์โดยส่วนหัว HSTS การเปลี่ยนเส้นทาง 307 ใช้เวลาเพียง 2 มิลลิวินาทีเท่านั้น](https://web.developers.google.cn/static/blog/bbc-hsts/image/a-307-internal-redirect-cd7d384b0a833.png?authuser=5&hl=th)
ส่วนหัว HSTS จะระบุคำสั่ง max-age
ในไวยากรณ์ที่คล้ายกับคำสั่ง max-age
ของ Cache-Control
คำสั่งนี้ใช้ค่าเป็นวินาทีที่ระบุระยะเวลาที่นโยบายจะมีผล ดังนี้
Strict-Transport-Security: max-age=3600
ในตัวอย่างก่อนหน้านี้ นโยบายจะมีผลภายใน 1 ชั่วโมงเท่านั้น
การทำให้ HSTS ใช้งานได้
ข้อเสียหลักของการใช้งาน HSTS คือคุณยังไม่พร้อมจะดูแลต้นทางของคุณให้มีความปลอดภัยอย่างเข้มงวด สมมติว่าคุณมีโดเมนย่อยจำนวนมากที่ให้บริการทรัพยากร แต่บางโดเมนอาจไม่ปลอดภัย ในสถานการณ์นี้ ส่วนหัว HSTS อาจทำให้เว็บไซต์เสียหาย
BBC ใช้แนวทางที่ถูกต้องในการทำให้ HSTS ใช้งานได้ ตามที่ Neil Craig พูดถึงในทวีต ค่าเริ่มต้นที่ตั้งไว้สำหรับ bbc.com คือ max-age=10
วิธีการนี้หมายความว่านโยบายมีผลในครั้งแรกเพียง 10 วินาที แม้วิธีนี้จะไม่ให้ประโยชน์มากนัก แต่ก็ควรพิจารณาให้ทราบว่าอาจมีปัญหาในการใช้ HSTS หรือไม่ เมื่อเวลาผ่านไป คุณจะเพิ่มนโยบายได้ทีละน้อยและตรวจสอบว่าเกิดปัญหาหรือไม่ ในขณะที่เขียนบทความนี้ bbc.com กำลังระบุนโยบาย HSTS ของ max-age=86400
และความต้องการดังกล่าวจะเพิ่มขึ้นเมื่อเวลาผ่านไป
คุณคงไม่อยากให้ค่า max-age
นานเมื่อทำให้ HSTS ใช้งานได้ คุณอาจพบปัญหาอย่างกะทันหันเพื่อแก้ปัญหาขณะที่ผู้ใช้พบปัญหา เริ่มต้นจากจำนวนน้อยแล้วค่อยๆ เพิ่มขึ้นเมื่อเวลาผ่านไป เมื่อมั่นใจว่าทุกอย่างเรียบร้อยดีแล้ว คุณสามารถตั้งค่าคำสั่ง max-age
ให้มีระยะเวลานานขึ้นมากได้ ขอแนะนำให้ตั้งค่า max-age
เป็น 1 หรือ 2 ปีเมื่อเปิดตัวอย่างเต็มรูปแบบ
การนำทางเบื้องต้นที่ปลอดภัยและรวดเร็วยิ่งขึ้นด้วยรายการโหลดล่วงหน้าของ HSTS
นโยบาย HSTS จะมีผลหลังจากการเข้าชมเว็บไซต์ครั้งแรกเท่านั้น ดังนั้นจึงไม่มีประโยชน์เมื่อเข้าชมเว็บไซต์ครั้งแรก ซึ่งยังคงต้องมีการเปลี่ยนเส้นทางที่ไม่ปลอดภัย อย่างไรก็ตาม คุณโหลดนโยบาย HSTS ล่วงหน้าได้โดยส่งเว็บไซต์ไปยังรายการโหลดล่วงหน้าของ HSTS ซึ่งเป็นรายการเว็บไซต์แบบฮาร์ดโค้ดที่เบราว์เซอร์ทราบว่าเป็น HTTPS เท่านั้น เมื่อเว็บไซต์ของคุณอยู่ในรายการโหลดล่วงหน้า การเข้าชมครั้งแรกจะได้รับการปกป้องด้วย และการเปลี่ยนเส้นทาง HTTP-to-HTTPS จะเกิดขึ้นทันที
ทดลองด้วยตัวคุณเอง
หาก BBC รู้สึกสบายใจที่จะทดลองใช้ HSTS ก็ถือเป็นโอกาสที่ดีที่คุณจะทำแบบเดียวกันกับเว็บไซต์ของคุณได้ ลองปรับแต่งเว็บไซต์ดูสิ และหากต้องการปรับปรุงให้ดีขึ้น ให้เพิ่มลงในรายการโหลดล่วงหน้าของ HSTS เมื่อคุณมั่นใจว่าไม่มีข้อบกพร่องเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ปลอดภัยและรวดเร็วยิ่งขึ้น