🟢 โหมดปลอดภัย - ป้องกัน SQL Injection
⚠️ คำเตือน: โหมดไม่ปลอดภัยจะแสดงช่องโหว่ SQL Injection จริง ใช้เพื่อการศึกษาเท่านั้น!
💡 อธิบายช่องโหว่ SQL Injection
❌ โค้ดที่มีช่องโหว่ (โหมดไม่ปลอดภัย):
// การสร้าง SQL query โดยตรงจาก input (อันตราย!)
const query = `SELECT * FROM users WHERE username = '${username}' AND password = '${password}'`;
// ถ้า input เป็น: username = "admin", password = "' OR 1=1 --"
// SQL ที่ได้: SELECT * FROM users WHERE username = 'admin' AND password = '' OR 1=1 --'
// ผลลัพธ์: เข้าสู่ระบบได้โดยไม่ต้องรู้รหัสผ่าน!
✅ โค้ดที่ปลอดภัย (โหมดปลอดภัย):
// ใช้ Parameterized Query / Prepared Statement
const query = `SELECT * FROM users WHERE username = ? AND password = ?`;
const params = [username, password];
// หรือใช้ Input Validation และ Escape Characters
function escapeSQL(input) {
return input.replace(/'/g, "''").replace(/;/g, "");
}
const safeUsername = escapeSQL(username);
const safePassword = escapeSQL(password);