ในฐานะนักพัฒนา PHP ระดับ Senior Architect สิ่งที่ต้องยึดมั่นเสมอคือหลักการ “Trust Nothing” (อย่าเชื่อถือข้อมูลใดๆ เลย) โดยเฉพาะอย่างยิ่งเมื่อข้อมูลนั้นมาจากผู้ใช้งานภายนอก (User Input) การทำ Data Sanitization และ Validation ไม่ใช่แค่ทางเลือก แต่เป็นรากฐานสำคัญของการเขียนโค้ดที่มีความปลอดภัยระดับ Production เสมอ เพราะการละเลยส่วนนี้คือประตูบานใหญ่ให้ผู้โจมตีเข้าถึงระบบได้
1. Validation: การตรวจสอบความถูกต้องของข้อมูล (Is it correct?)
Validation คือกระบวนการตรวจสอบว่าข้อมูลที่ได้รับมานั้นมีรูปแบบ (Format), ชนิดข้อมูล (Data Type), และขอบเขต (Range) ตรงตามที่เราคาดหวังหรือไม่ ก่อนที่เราจะนำข้อมูลนั้นไปประมวลผลหรือบันทึก การ Validation จะช่วยให้เรารู้ว่า “ข้อมูลนี้ถูกต้องตามกฎเกณฑ์หรือไม่?”
ตัวอย่างเช่น หากเราคาดหวังว่าอายุจะต้องเป็นตัวเลขและมากกว่า 0 หรืออีเมลต้องมีรูปแบบที่ถูกต้องตามมาตรฐาน (Regex) การใช้ฟังก์ชันของ PHP อย่าง `filter_var()` คือจุดเริ่มต้นที่สำคัญ
2. Sanitization: การทำความสะอาดข้อมูล (Is it safe?)
Sanitization คือกระบวนการทำความสะอาด หรือกรองอักขระที่เป็นอันตรายออกจากข้อมูล เพื่อให้แน่ใจว่าข้อมูลนั้นปลอดภัยก่อนนำไปใช้งานจริง ไม่ว่าจะเป็นการแสดงผลบนหน้าเว็บ (XSS) หรือการป้องกันโค้ดแปลกปลอม (เช่น SQL Injection) การทำ Sanitization มักเกี่ยวข้องกับการกำจัดหรือแปลงแท็ก HTML/JavaScript ที่ผู้ใช้ป้อนเข้ามา
3. ทำไมต้องใช้ทั้งคู่? (The Synergy)
เราต้องใช้ทั้ง Validation และ Sanitization เพราะมันป้องกันช่องโหว่ที่แตกต่างกันอย่างสมบูรณ์:
- Validation: ตรวจสอบว่าข้อมูลที่เข้ามามี *รูปแบบ* ที่ถูกต้อง (เช่น ต้องเป็นตัวเลขเท่านั้น)
- Sanitization: ตรวจสอบว่าข้อมูลที่เข้ามา *ปราศจาก* อักขระอันตราย (เช่น `