ก่อนเปิดเว็บให้คนเข้า ตรวจเจ็ดอย่างนี้ก่อน
รายการตรวจก่อนเปิดเว็บที่ทำเองได้ทั้งหมด ไม่ต้องใช้เครื่องมือพิเศษ ทุกข้อมาจากปัญหาที่เจอซ้ำในเว็บที่เปิดใช้จริงแล้ว
เว็บที่กำลังจะเปิด มักถูกตรวจแค่ว่าหน้าตาสวยไหมและกดแล้วไปถูกที่ไหม ซึ่งเป็นสองข้อที่คนเห็น ปัญหาที่แพงที่สุดมักอยู่ในสิ่งที่คนไม่เห็น
หนึ่ง เปิดด้วย https ทุกหน้า ไม่ใช่แค่หน้าจ่ายเงิน
ลองพิมพ์ที่อยู่เว็บแบบไม่ใส่ https ดู ถ้ามันไม่เด้งไปหน้าที่มีกุญแจให้เอง แปลว่ายังไม่ครบ หน้าที่ไม่ได้เข้ารหัสทำให้คนที่อยู่บนไวไฟเดียวกับลูกค้าเห็นทุกอย่างที่ลูกค้าพิมพ์
สอง หน้าเข้าระบบผู้ดูแลต้องไม่อยู่ที่อยู่มาตรฐาน
ถ้าหน้าเข้าระบบของคุณอยู่ที่อยู่ที่เดาได้ทันที มันจะโดนไล่ลองรหัสผ่านทั้งวันทั้งคืนโดยอัตโนมัติ ย้ายที่อยู่ไม่ได้ทำให้ปลอดภัยขึ้นในเชิงทฤษฎี แต่ตัดปริมาณการโจมตีอัตโนมัติออกไปเกือบทั้งหมด
สาม ไฟล์ที่ไม่ควรเปิดดูได้จากภายนอก
ลองเปิดที่อยู่พวกนี้ดูจากเบราว์เซอร์ ถ้าเปิดแล้วเห็นเนื้อหาแทนที่จะเจอหน้าไม่พบ แปลว่ามีปัญหาต้องรีบแก้
/.env /.git/config /backup.zip /database.sql /phpinfo.php
ไฟล์ .env กับโฟลเดอร์ .git คือสองอย่างที่เจอบ่อยที่สุดและอันตรายที่สุด เพราะข้างในมีรหัสผ่านฐานข้อมูลและกุญแจของบริการต่างๆ ครบ คนที่เปิดเจอไม่ต้องแฮกอะไรเลย แค่อ่านแล้วเข้าไปใช้ได้ตรงๆ
สี่ ข้อความแจ้งข้อผิดพลาดต้องไม่บอกความลับ
ลองทำให้เว็บพังดูสักครั้ง เช่นใส่ที่อยู่มั่วๆ หรือกรอกฟอร์มด้วยข้อมูลที่ผิดรูปแบบ ถ้าหน้าจอขึ้นรายละเอียดว่าไฟล์ไหนบรรทัดไหน หรือขึ้นคำสั่งฐานข้อมูลออกมา นั่นคือการแจกแผนที่ให้คนที่กำลังหาทางเข้า
ห้า ราคาและสิทธิ์ต้องถูกตัดสินที่เซิร์ฟเวอร์
ทุกอย่างที่ส่งมาจากเบราว์เซอร์ของผู้ใช้ แก้ได้หมด รวมถึงราคาสินค้า จำนวน และรหัสผู้ใช้ ถ้าระบบเชื่อตัวเลขที่ส่งมา คนที่รู้วิธีจะซื้อของราคาห้าพันในราคายี่สิบบาทได้
หก ฟอร์มต้องกันการยิงซ้ำ
ฟอร์มติดต่อที่ไม่มีการจำกัดจำนวนครั้ง จะกลายเป็นช่องทางส่งสแปมเข้าอีเมลคุณวันละหลายพันฉบับ จนของจริงจมหายไปในกอง
เจ็ด สำรองข้อมูลไว้คนละที่กับตัวเว็บ
ข้อนี้ไม่ได้ป้องกันอะไรเลย แต่มันเปลี่ยนวันที่แย่ที่สุดให้เหลือแค่เสียเวลาครึ่งวัน ที่สำคัญคือต้องเก็บคนละที่ เพราะถ้าเก็บไว้บนเครื่องเดียวกัน วันที่เครื่องมีปัญหาจะหายไปพร้อมกันทั้งคู่
และต้องเคยลองกู้กลับมาจริงอย่างน้อยหนึ่งครั้ง ข้อมูลสำรองที่ไม่เคยถูกกู้ ไม่ต่างจากไม่มี เพราะจะไปรู้ว่าใช้ไม่ได้ในวันที่ต้องใช้พอดี
สรุป
เจ็ดข้อนี้ตรวจเองได้ทั้งหมดโดยไม่ต้องใช้เครื่องมือพิเศษ ใช้เวลาไม่เกินหนึ่งชั่วโมง และครอบคลุมปัญหาส่วนใหญ่ที่ผมเจอในเว็บที่เปิดใช้งานจริงแล้ว