หนึ่งในเทคนิคการโจมตีเว็บไซต์ที่อันตรายและเกิดขึ้นบ่อยที่สุดคือ SQL Injection (SQLi) ซึ่งเป็นการแทรกโค้ด SQL อันตรายลงไปในช่องรับข้อมูลของเว็บไซต์หรือแอปพลิเคชัน เพื่อดึง ดูด แก้ไข หรือลบข้อมูลในฐานข้อมูลโดยไม่ได้รับอนุญาต
หากเว็บไซต์หรือระบบใดมีช่องโหว่ SQLi อาจนำไปสู่ความเสียหายมหาศาล ทั้งข้อมูลรั่วไหล การสูญเสียฐานข้อมูล หรือแม้แต่การถูกยึดระบบ
หัวข้อ
SQL Injection (SQLi) คืออะไร?
SQL Injection เป็นช่องโหว่ด้านความปลอดภัยของเว็บไซต์และเว็บแอปพลิเคชัน ที่เกิดจากการนำข้อมูลจากผู้ใช้ไปต่อในคำสั่ง SQL Query โดยไม่กรองข้อมูลหรือป้องกัน ส่งผลให้แฮ็กเกอร์สามารถ “แทรก” โค้ด SQL อันตรายลงไปได้
ตัวอย่าง Payload
' OR '1'='1'; --ตัวอย่าง SQL Query ที่เสี่ยง
SELECT * FROM users WHERE username = '$username' AND password = '$password';หาก $username ถูกแทนด้วย ' OR '1'='1' -- ระบบจะดึงข้อมูลผู้ใช้ทั้งหมดออกมาโดยไม่ตรวจสอบรหัสผ่าน
ผลกระทบจาก SQL Injection
- ดึงข้อมูลในฐานข้อมูล ทั้ง Username, Password, ข้อมูลส่วนตัว, ข้อมูลลูกค้า
- แก้ไข / ลบข้อมูล ในฐานข้อมูล
- เข้าควบคุมระบบ (Remote Code Execution)
- ขโมย Credential เพื่อยึดระบบทั้งหมด
- กระทบต่อความน่าเชื่อถือของเว็บไซต์และธุรกิจ
เทคนิคการโจมตี SQL Injection ที่พบบ่อย
1. Classic SQL Injection
- แทรกโค้ด SQL ผ่าน URL หรือช่อง Login Form
2. Blind SQL Injection
- ดึงข้อมูลโดยอาศัยการตอบกลับของ Server เช่น True/False, Error Message
3. Union-based SQL Injection
- ใช้คำสั่ง UNION ดึงข้อมูลจาก Table อื่นในฐานข้อมูล
4. Error-based SQL Injection
- ใช้ Error Message ช่วยวิเคราะห์โครงสร้างฐานข้อมูล
5. Time-based SQL Injection
- ใช้ฟังก์ชัน Delay ตรวจสอบว่าคำสั่ง SQL ถูก Execute จริงหรือไม่
ตัวอย่าง SQL Injection แบบง่าย
https://example.com/product.php?id=1 OR 1=1หากเว็บไซต์ไม่มีการกรอง ID ระบบจะดึงข้อมูลสินค้าทั้งหมดออกมา
วิธีป้องกัน SQL Injection
1. ใช้ Prepared Statements / Parameterized Queries
- ใช้ PDO หรือ MySQLi แบบ Prepared Statement แทนการต่อ String
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = ? AND password = ?');
$stmt->execute([$username, $password]);2. Validate และ Sanitize Input ทุกครั้ง
- ตรวจสอบประเภทข้อมูล เช่น ตัวเลขต้องเป็นตัวเลขเท่านั้น
3. หลีกเลี่ยงการใช้ Dynamic SQL Query
- ไม่ต่อ String โดยตรงกับ Input จากผู้ใช้
4. จำกัดสิทธิ์ของ Database User
- ใช้ Account ที่มีเฉพาะสิทธิ์ที่จำเป็น ลดผลกระทบหากถูกเจาะระบบ
5. ใช้ Web Application Firewall (WAF)
- ช่วยกรองคำสั่ง SQL อันตรายก่อนถึง Database
6. ใช้ Error Handling ที่ปลอดภัย
- ไม่แสดง Error Message จาก SQL ให้ผู้ใช้เห็น
เครื่องมือทดสอบ SQL Injection
- sqlmap – เครื่องมือยอดนิยมสำหรับทดสอบ SQLi
- Burp Suite – สำหรับทดสอบและวิเคราะห์เว็บแอปพลิเคชัน
- OWASP ZAP – เครื่องมือทดสอบความปลอดภัย Open Source
สรุป
SQL Injection (SQLi) คือช่องโหว่ร้ายแรงที่เปิดโอกาสให้แฮ็กเกอร์ แทรกโค้ด SQL เข้าไปในระบบ เพื่อขโมย แก้ไข หรือลบข้อมูลจากฐานข้อมูล หากระบบไม่ป้องกันอย่างดี อาจสูญเสียข้อมูลมหาศาลและกระทบชื่อเสียงขององค์กร
วิธีป้องกันที่ดีที่สุดคือใช้ Prepared Statements, Validate Input และจำกัดสิทธิ์ของ Database User
อย่ารอช้า! ให้ KNmasters ดูแลธุรกิจของคุณวันนี้!
หากคุณต้องการข้อมูลเพิ่มเติมหรืออยากเริ่มใช้บริการกับ KNmasters เราพร้อมช่วยให้ธุรกิจของคุณเติบโตด้วยกลยุทธ์การตลาดออนไลน์ครบวงจร
- Facebook: KNmasters
- LINE: KNmasters
- Youtube: KNmasters
- Instagram: knmasters.official
- Tiktok: KNmasters.official
- Twitter: KNmasters Official
- เว็บไซต์: www.knmasters.com
- แผนที่: KNmasters



