· อ่าน 7 นาที
ส่วนหัวความปลอดภัยคืออะไร และทำไมเว็บธุรกิจไทยส่วนใหญ่ถึงไม่มี
อธิบายผลตรวจแต่ละข้อบนหน้าแรกของเราเป็นภาษาคน: HSTS, CSP, clickjacking, การเปิดเผยเวอร์ชัน และสิ่งที่เจ้าของธุรกิจควรถามคนทำเว็บ
เมื่อคุณพิมพ์ชื่อเว็บลงในช่องตรวจบนหน้าแรกของเรา สิ่งที่เกิดขึ้นคือเซิร์ฟเวอร์ของเราส่งคำขอไปยังเว็บนั้นหนึ่งครั้ง เหมือนที่เบราว์เซอร์ของลูกค้าทำทุกวัน แล้วอ่านสิ่งที่เว็บตอบกลับมาก่อนจะแสดงหน้า ส่วนที่ตอบกลับมานี้เรียกว่า "ส่วนหัว" (headers) และมันบอกเบราว์เซอร์ว่าควรปฏิบัติกับเว็บนี้อย่างไร
บทความนี้อธิบายว่าแต่ละข้อหมายถึงอะไรสำหรับธุรกิจ ไม่ใช่สำหรับโปรแกรมเมอร์
เว็บของคุณคุยกับเบราว์เซอร์ก่อนที่ลูกค้าจะเห็นอะไร
ทุกครั้งที่มีคนเปิดเว็บ เซิร์ฟเวอร์จะส่งข้อความสั้น ๆ มาก่อนเนื้อหา ข้อความเหล่านี้มีคำสั่งอย่างเช่น "ห้ามให้เว็บอื่นเอาหน้านี้ไปฝัง" หรือ "ต่อไปนี้ให้เชื่อมต่อแบบเข้ารหัสเท่านั้น" ถ้าเซิร์ฟเวอร์ไม่ส่งคำสั่งเหล่านี้ เบราว์เซอร์จะใช้ค่าเริ่มต้นที่ผ่อนปรน ซึ่งออกแบบมาเมื่อยี่สิบปีก่อนตอนที่อินเทอร์เน็ตยังไม่มีมิจฉาชีพมากเท่าวันนี้
ข่าวดีคือการเพิ่มส่วนหัวเหล่านี้ใช้เวลาไม่กี่นาทีสำหรับคนที่รู้ว่าต้องทำอะไร ข่าวร้ายคือคนทำเว็บส่วนใหญ่ไม่เคยทำ เพราะลูกค้าไม่เคยถาม
ข้อที่หนึ่ง: บังคับเชื่อมต่อแบบเข้ารหัส
ชื่อทางเทคนิคคือ HSTS เมื่อลูกค้าพิมพ์ ร้านของคุณ.com โดยไม่ใส่ https:// ข้างหน้า เบราว์เซอร์จะลองเชื่อมต่อแบบไม่เข้ารหัสก่อน ในช่วงเสี้ยววินาทีนั้น ใครที่อยู่บน Wi-Fi เดียวกัน เช่น ในร้านกาแฟหรือสนามบิน สามารถแทรกตัวเข้ามาได้
ส่วนหัวนี้บอกเบราว์เซอร์ว่า "จำไว้ว่าเว็บนี้ต้องเข้ารหัสเสมอ" หลังจากเข้าครั้งแรก เบราว์เซอร์จะไม่ยอมเชื่อมต่อแบบไม่เข้ารหัสอีกเลย
ถ้าไม่มี: ลูกค้าที่กรอกฟอร์มบน Wi-Fi สาธารณะมีความเสี่ยงถูกดักข้อมูล
ข้อที่สอง: ควบคุมว่าสคริปต์ไหนรันได้
ชื่อทางเทคนิคคือ Content Security Policy หรือ CSP เว็บสมัยใหม่รันโค้ดจากหลายที่: ระบบวิเคราะห์ของ Google, ปุ่มแชท, ระบบชำระเงิน ถ้าใครสักคนหาช่องแทรกโค้ดเข้ามาได้ (ผ่านฟอร์มที่ตรวจสอบไม่ดี หรือปลั๊กอินที่มีช่องโหว่) โค้ดนั้นจะรันบนเว็บของคุณเหมือนเป็นส่วนหนึ่งของเว็บ และอ่านทุกอย่างที่ลูกค้าพิมพ์ได้
CSP คือรายชื่อแหล่งที่อนุญาต อะไรที่ไม่อยู่ในรายชื่อ เบราว์เซอร์จะบล็อกให้ แม้จะถูกแทรกเข้ามาได้ก็ตาม
ถ้าไม่มี: ช่องโหว่เล็ก ๆ จุดเดียวกลายเป็นการขโมยข้อมูลลูกค้าทั้งหมด นี่คือวิธีที่ข้อมูลบัตรเครดิตรั่วจากเว็บร้านค้าหลายแห่งในช่วงหลายปีที่ผ่านมา
ข้อที่สาม: ป้องกันการถูกนำไปฝังในเว็บอื่น
มิจฉาชีพสามารถสร้างหน้าเว็บที่มีหน้าเว็บของคุณซ่อนอยู่ข้างใต้แบบโปร่งใส แล้ววางปุ่ม "รับของรางวัล" ทับตรงตำแหน่งปุ่ม "ยืนยันการโอน" ของคุณพอดี ลูกค้าคิดว่ากดรับรางวัล แต่จริง ๆ กดปุ่มบนเว็บของคุณ เทคนิคนี้ชื่อ clickjacking
ส่วนหัวที่ชื่อ X-Frame-Options หรือคำสั่ง frame-ancestors ใน CSP บอกเบราว์เซอร์ว่าห้ามให้ใครเอาหน้าเว็บนี้ไปฝัง
ถ้าไม่มี: เว็บที่มีระบบสมาชิกหรือการชำระเงินมีความเสี่ยงสูง เว็บที่เป็นโบรชัวร์ล้วน ๆ ความเสี่ยงต่ำกว่า แต่ก็ไม่มีเหตุผลที่จะไม่ตั้ง
ข้อที่สี่: ห้ามเบราว์เซอร์เดาชนิดไฟล์
เบราว์เซอร์บางตัวฉลาดเกินไป ถ้าได้รับไฟล์ที่บอกว่าเป็นรูป แต่ข้างในดูเหมือนโค้ด มันอาจตัดสินใจรันเป็นโค้ด ส่วนหัว X-Content-Type-Options: nosniff บอกว่า "เชื่อสิ่งที่ฉันบอก อย่าเดา"
ถ้าไม่มี: เว็บที่ให้ผู้ใช้อัปโหลดไฟล์ได้ (รูปโปรไฟล์ เอกสาร) มีความเสี่ยงที่ไฟล์ดัดแปลงจะถูกรันเป็นสคริปต์
ข้อที่ห้า: ควบคุมข้อมูลที่รั่วออกไปเมื่อลูกค้ากดลิงก์
เมื่อลูกค้ากดลิงก์จากเว็บของคุณไปเว็บอื่น เบราว์เซอร์จะบอกเว็บปลายทางว่ามาจากหน้าไหน โดยค่าเริ่มต้นจะส่ง URL เต็ม ถ้า URL ของคุณมีรหัสสั่งซื้อ ชื่อลูกค้า หรือรหัสรีเซ็ตรหัสผ่านอยู่ในนั้น ข้อมูลนั้นรั่วไปทันที
Referrer-Policy ที่ตั้งเป็น strict-origin-when-cross-origin จะส่งแค่ชื่อโดเมนของคุณ ไม่ส่งหน้าหรือพารามิเตอร์
ถ้าไม่มี: ข้อมูลใน URL รั่วไปยังเว็บภายนอกและเครื่องมือโฆษณาที่ฝังอยู่ในเว็บเหล่านั้น
ข้อที่หก: อย่าบอกว่าใช้ซอฟต์แวร์เวอร์ชันไหน
หลายเว็บส่งส่วนหัวอย่าง X-Powered-By: PHP/7.2.34 หรือ Server: Apache/2.4.29 ออกมาโดยไม่รู้ตัว สำหรับผู้โจมตี นี่คือของขวัญ: ค้นหา "PHP 7.2.34 exploit" แล้วได้รายการช่องโหว่ที่รู้แล้วว่าใช้กับเว็บของคุณได้แน่นอน
ถ้ามี: บอตโจมตีอัตโนมัติจะเลือกเว็บของคุณเป็นเป้าหมายก่อนเว็บที่ไม่เปิดเผยข้อมูล
ข้อที่เจ็ด: ใบรับรอง HTTPS และวันหมดอายุ
ใบรับรองคือสิ่งที่ทำให้กุญแจล็อกปรากฏในเบราว์เซอร์ มันมีวันหมดอายุ ส่วนใหญ่ 90 วันหรือ 1 ปี เมื่อหมดอายุ เบราว์เซอร์จะแสดงหน้าเตือนสีแดงเต็มจอ และลูกค้าเกือบทั้งหมดจะปิดหน้าทันที
เรื่องนี้เกิดขึ้นบ่อยกว่าที่คิด โดยเฉพาะในวันหยุดยาว เพราะไม่มีใครดูแลอยู่ การตรวจของเราแสดงจำนวนวันที่เหลือ ถ้าต่ำกว่า 30 วันและไม่มีระบบต่ออายุอัตโนมัติ ควรรีบจัดการ
ข้อที่แปด: ความเร็วในการตอบสนอง
ข้อสุดท้ายไม่ใช่ความปลอดภัย แต่เป็นเงิน เวลาที่เซิร์ฟเวอร์ใช้ก่อนส่งข้อมูลไบต์แรกกลับมา (TTFB) คือขีดจำกัดล่างของความเร็วทั้งหมด ถ้าเซิร์ฟเวอร์ใช้ 2 วินาทีก่อนจะเริ่มตอบ ต่อให้หน้าเว็บเบาแค่ไหนก็ช้าอย่างน้อย 2 วินาที และลูกค้าบนมือถือ 4G ต่างจังหวัดจะรอน้อยกว่าที่คุณคิดมาก
สิ่งที่ควรถามคนทำเว็บ
ถ้าคุณกำลังจ้างคนทำเว็บ หรือมีเว็บอยู่แล้วและอยากรู้ว่าผู้ดูแลทำอะไรไว้ ลองถามสามคำถามนี้:
- เว็บของเราตั้งค่า HSTS และ CSP หรือไม่ ขอดูค่าที่ตั้งได้ไหม
- ใบรับรอง HTTPS ต่ออายุอัตโนมัติหรือไม่ และใครได้รับแจ้งเตือนถ้ามันล้มเหลว
- เซิร์ฟเวอร์ของเราเปิดเผยเวอร์ชันซอฟต์แวร์หรือไม่
ถ้าคำตอบคือความเงียบ หรือ "ไม่จำเป็นหรอก" คุณได้คำตอบแล้ว
ทั้งหมดนี้ตรวจได้ฟรีในห้าวินาทีบนหน้าแรกของเรา และถ้าอยากได้รายงานฉบับเต็ม 24 รายการพร้อมวิธีแก้ ดูที่บริการตรวจสอบความปลอดภัย
