26 มิ.ย. 2023 เวลา 17:01 • ไอที & แก็ดเจ็ต

รู้จัก HSTS หรือ HTTP Strict-Transport-Security

HSTS หรือ HTTP Strict-Transport-Security เป็น http header ที่ส่งออกมาจาก server เวลาที่เราเข้าใช้งานเว็บ
เกริ่นก่อนว่าข้อมูลที่ส่งออกมาจากเว็บ แบ่งง่ายๆได้ 2 ส่วน header กับ body ตัว header นี่ไม่ได้เอาไปแสดงผลออกมาที่หน้าเว็บ แต่เป็นวัตถุประสงค์อื่น เช่น browser เอาไปใช้งาน อย่างตัว HSTS นี้ เป็นต้น
เมื่อ browser เห็นค่านี้ ก็จะรู้ว่าเว็บ domain นั้นๆ มันเป็น HTTPS นะ และต่อจากนี้ไปให้ใช้งานผ่านทาง HTTPS ที่มันปลอดภัยเท่านั้น
นั่นคือถ้าวันดีคืนดี เว็บมันกลายเป็น HTTP ไม่มี S browser จะไม่ยอมให้ใช้งาน มันจะเปลี่ยนให้ไปใช้ HTTPS อัตโนมัติ
และถ้า HTTPS แต่ใช้ certificate ที่ไม่ถูก ไม่ได้รับรอง ไม่เชื่อถือ browser ก็จะไม่ยอมให้ใช้งานอีกเช่นกัน
แล้วทำไมถึงต้องมีการควบคุมนี้ละ
เอาตัวอย่างการโจมตีแบบที่ฮิตและทำง่ายๆ เข้าใจง่ายๆอยู่ตัวอย่างนึง นั้นคือเว็บปลอม
สมมติว่า ลุงปอจะเข้าใช้งาน internet banking เอาเป็นชื่อ banking.com ละกัน ซึ่งโดยปกติจะไปที่ server ip 1.1.1.1
ลุงปอไปที่ไหนสักแห่งที่มี free internet ให้ใช้ ซึ่งเป็นเรื่องปกติทั่วไป เพียงแต่ว่าเจ้านี้คิดไม่ซื่อ ใช้โปรแกรมคอยดูว่าใครอยากเข้าเว็บ banking.com บ้าง ถ้ามีก็เปลี่ยนจากที่จะเข้า ip 1.1.1.1 ให้ไปที่ 2.2.2.2 แทน
้แล้วก็เปลี่ยนจาก HTTPS เป็น HTTP ด้วย เพราะไม่มี cert ของ banking.com นี่ มันจะแจ้งเตือนแดงๆ เหยื่อรู้ตัวหมด
url ก็โชว์หราว่าเป็น banking.com เพียงแต่ไม่มีรูปกุญแจเขียวๆ ว่าเป็น HTTPS แต่แล้วไง ใครดูบ้างว่าเว็บที่เข้าใช้งานวันละร้อยๆเว็บเป็น HTTPS ทุกอัน
ในเมื่อ url มันถูก ลุงปอก็ login ไปเลยสิครับ เท่านี้ก็จบละ ทั้งเป็น HTTP ที่ไม่เข้ารหัส ทั้ง submit ไปที่เว็บปลอม คนร้ายก็ได้ข้อมูลไป
แต่เหตุการณ์นี้จะถูกตัดตอน ป้องกันได้ ถ้าใช้ HSTS
นั้นคือ พอ browser ที่จำไว้แล้วว่า banking.com มันต้องเป็น HTTPS ที่ cert ถูกเท่านั้นนะ
การจะเปลี่ยนไปใช้เว็บ HTTP ธรรมดา มันก็ไม่ยอมให้ทำได้แล้ว พอจะไปใช้ HTTPS แต่ใบ cert ก็ไม่ถูกอีก (แน่นอนเพราะเป็นเว็บปลอม) browser ก็ไม่ยอมให้ใช้งาน
นี่แหละประโยชน์ของ HSTS header
แต่ข้อเสีย หรือข้อต้องระวังมันก็มีเช่นกันนะ
ถ้าเราตั้งค่า HSTS ไปแล้ว แต่วันหลังมา อยากเอา HTTPS ออก ให้ใช้งาน HTTP ปกติ มันก็จะทำไม่ได้ แล้ว user ก็จะใช้งานเว็บนั้นไม่ได้เลย จนกว่าค่าที่ HSTS บอกให้ browser จำไว้นั้นจะหมดอายุไป
แต่โดยรวม ผมว่าข้อดีมีมากกว่าข้อเสีย และเหตุผลที่จะเปลี่ยนกลับไปใช้ HTTP โดยไม่รองรับ HTTPS ซึ่งจะทำให้เกิดปัญหาก็เป็นไปได้น้อยอยู่เหมือนกัน
โฆษณา