SQL Injection (SQLi) คืออะไร? รู้จักการโจมตีฐานข้อมูลด้วยโค้ด SQL และวิธีป้องกัน

/
/
SQL Injection (SQLi) คืออะไร? รู้จักการโจมตีฐานข้อมูลด้วยโค้ด SQL และวิธีป้องกัน
KNmasters
หมวดหมู่:ทั่วไป

หนึ่งในเทคนิคการโจมตีเว็บไซต์ที่อันตรายและเกิดขึ้นบ่อยที่สุดคือ 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 เราพร้อมช่วยให้ธุรกิจของคุณเติบโตด้วยกลยุทธ์การตลาดออนไลน์ครบวงจร

บทความที่เกี่ยวข้อง

KNmasters
รวมข้อดี–ข้อเสียของ WordPress ก่อนจ้างทำเว็บไซต์
ก่อนตัดสินใจจ้างทำเว็บไซต์ สิ่งสำคัญที่สุดไม่ใช่แค่เลือกบริษัทรับทำเว็บ แต่คือกา...
location-symbol-street-city (WebH)
โครงสร้างหน้าเว็บขายบริการ ที่ช่วยเพิ่มยอดขาย (ฉบั...
ในยุคที่ลูกค้ามีตัวเลือกมากมาย การมี “หน้าบริการ” ที่ดีไม่ใช่แค่สวย แต่ต้อง “ขาย...
organic-cosmetic-product-with-dreamy-aesthetic-fresh-background (Web H)
HTTP และ HTTPS ต่างกันอย่างไร? เข้าใจความต่างก่อนเ...
หลายคนเคยเห็นสัญลักษณ์ “🔒” หน้า URL แล้วสงสัยว่า HTTP กับ HTTPS ต่างกันอย่างไร?...
organic-cosmetic-product-with-dreamy-aesthetic-fresh-background (Web H)
วิธีเพิ่มยอดขายด้วยเว็บไซต์ WordPress สำหรับธุรกิจ...
ในยุคที่ลูกค้าค้นหาร้านผ่าน Google ก่อนเดินทาง เว็บไซต์ไม่ใช่แค่ “มีไว้เฉยๆ” แต่...
organic-cosmetic-product-with-dreamy-aesthetic-fresh-background (Web H)
10 เว็บไซต์ WordPress สวยและใช้งานดี ที่คุณควรดูเป...
กำลังหาแรงบันดาลใจเว็บสวยๆ ที่สร้างด้วย WordPress อยู่ใช่ไหม? การดูตัวอย่างเว็บไ...
KNMASTERS

ผู้ช่วยที่จะขับเคลื่อนธุรกิจของคุณให้เติบโตอย่างมั่นคง

หากคุณกำลังมองหาทีมที่เข้าใจธุรกิจของคุณจริงๆ และพร้อมเปลี่ยนไอเดียให้กลายเป็นผลลัพธ์ที่จับต้องได้ KNmasters พร้อมอยู่เคียงข้างเพื่อให้คำปรึกษา วางกลยุทธ์ และสร้างแนวทางที่เหมาะกับคุณ เราช่วยให้ธุรกิจของคุณเติบโตได้อย่างยั่งยืนในโลกออนไลน์