30 ส.ค. 2024 เวลา 04:56 • การศึกษา
Cyber Attack By Shoper Gamer

SQL Injection คืออะไร

โดย
SQL Injection หรือการฉีดโค้ด SQL เป็นช่องโหว่ด้านความปลอดภัยในระบบคอมพิวเตอร์ ที่เกิดจากการที่ผู้โจมตีสามารถแทรกโค้ด SQL เข้าไปในช่องรับข้อมูลของเว็บแอปพลิเคชัน เพื่อควบคุมฐานข้อมูลเบื้องหลังได้ ทำให้ผู้โจมตีสามารถเข้าถึง แก้ไข หรือลบข้อมูลที่สำคัญได้
  • ​ทำงานอย่างไร
ปกติแล้ว เมื่อเรากรอกข้อมูลลงในช่องต่างๆ ของเว็บไซต์ เช่น ช่อง username หรือ password ระบบจะนำข้อมูลที่เราป้อนไปใส่ในคำสั่ง SQL เพื่อค้นหาข้อมูลในฐานข้อมูล แต่ถ้าเว็บไซต์นั้นไม่ได้ตรวจสอบและกรองข้อมูลที่ผู้ใช้ป้อนเข้ามาอย่างละเอียด ผู้โจมตีสามารถแทรกโค้ด SQL เข้าไปในข้อมูลที่ป้อนได้ เช่น แทนที่จะป้อนชื่อผู้ใช้ ผู้โจมตีอาจป้อน 'or '1'='1' ซึ่งจะทำให้คำสั่ง SQL ที่ถูกสร้างขึ้นมีความหมายเปลี่ยนไป ทำให้ผู้โจมตีสามารถเข้าถึงข้อมูลทั้งหมดในฐานข้อมูลได้
  • ​ประเภท SQL Injection
○ In-band SQL Injection
ผู้โจมตีจะได้รับผลลัพธ์ของคำสั่ง SQL ที่ฉีดเข้าไปโดยตรงผ่านทางหน้าเว็บ
○ Blind SQL Injection
ผู้โจมตีจะไม่ได้รับผลลัพธ์ของคำสั่ง SQL โดยตรง แต่จะต้องใช้เทคนิคอื่นๆ เช่น การสังเกตเวลาในการตอบสนองของเซิร์ฟเวอร์ เพื่อคาดเดาผลลัพธ์
  • ​ความอันตรายของ SQL Injection
○ การเข้าถึงข้อมูลที่ไม่ได้รับอนุญาต
ผู้โจมตีสามารถเข้าถึงข้อมูลส่วนบุคคล ข้อมูลทางการเงิน หรือข้อมูลที่สำคัญอื่นๆ ได้
○ การแก้ไขข้อมูล
ผู้โจมตีสามารถแก้ไขข้อมูลในฐานข้อมูล เช่น เปลี่ยนแปลงราคาสินค้า หรือลบข้อมูลลูกค้า
○ การลบข้อมูล
ผู้โจมตีสามารถลบข้อมูลทั้งหมดในฐานข้อมูลได้
○ การควบคุมเซิร์ฟเวอร์
ในบางกรณี ผู้โจมตีอาจสามารถใช้ช่องโหว่ SQL Injection เพื่อควบคุมเซิร์ฟเวอร์ทั้งหมดได้
  • ​ตัวอย่างการโจมตีของ SQL Injection
สมมติว่ามีเว็บไซต์หนึ่งมีฟอร์มสำหรับ login โดยมีช่องให้กรอก username และ password ถ้าเว็บไซต์นี้ไม่ได้ตรวจสอบและกรองข้อมูลที่ผู้ใช้ป้อนเข้ามาอย่างละเอียด ผู้โจมตีอาจจะป้อน username เป็น 'or '1'='1' และ password เป็นอะไรก็ได้ ผลลัพธ์ก็คือระบบจะตรวจสอบความถูกต้องของคำสั่ง SQL ดังนี้:
SELECT * FROM users WHERE username = '' or '1'='1' AND password = 'password'
เนื่องจากเงื่อนไข '1'='1' เป็นจริงเสมอ ดังนั้นคำสั่ง SQL นี้จะคืนค่าผู้ใช้ทั้งหมดในฐานข้อมูลออกมา
1
  • ​วิธีป้องกัน
○ Prepared Statements ใช้ Prepared Statements เพื่อป้องกันการฉีดโค้ด SQL โดยตรง
○ Parameterized Queries
ใช้ Parameterized Queries เพื่อแยกส่วนที่เป็นข้อมูลผู้ใช้ ออกจากส่วนที่เป็นคำสั่ง SQL
○ Input Validation
ตรวจสอบและกรองข้อมูลที่ผู้ใช้ป้อนเข้ามาอย่างละเอียด
○ Least Privilege
ให้สิทธิ์ในการเข้าถึงฐานข้อมูลแก่ผู้ใช้แต่ละคนให้น้อยที่สุดเท่าที่จำเป็น
○ Regular Security Audits
ตรวจสอบระบบอย่างสม่ำเสมอเพื่อหาช่องโหว่
**สรุป**
SQL Injection เป็นช่องโหว่ที่อันตรายมาก และสามารถก่อให้เกิดความเสียหายต่อระบบและข้อมูลได้อย่างร้ายแรง การป้องกัน SQL Injection จึงเป็นสิ่งสำคัญอย่างยิ่งสำหรับผู้พัฒนาเว็บแอปพลิเคชันทุกคน
Credit :
👇
  • ​https://youtu.be/Op53ZTK4djY?si=Fat3jKvmkNqGWKnI
  • ​https://youtu.be/iHUV_6fa2Q8?si=yNXoyqAuPqu6eVFk
  • ​https://youtu.be/LNgSItRVgoA?si=l2IgKFDH3ipzHXVw
✏️ Shoper Gamer

ดูเพิ่มเติมในซีรีส์

โฆษณา