💉 SQL Injection Payloads สำหรับทดสอบ
คลิกปุ่มด้านล่างเพื่อใส่ payload ลงใน username field:
💡 อธิบายการทำงาน
โหมดไม่ปลอดภัย:
// SQL ที่มีช่องโหว่
const query = `SELECT * FROM users WHERE username = '${username}' AND password = '${password}'`;
// เมื่อ username = "' OR 1=1 --", password = "anything"
// SQL ที่ได้: SELECT * FROM users WHERE username = '' OR 1=1 --' AND password = 'anything'
// ผลลัพธ์: 1=1 เป็น true เสมอ, -- comment ทำให้เงื่อนไข password ถูกละเว้น
โหมดปลอดภัย:
// ป้องกันด้วย Input Validation และ Parameterized Query
function escapeSQL(input) {
return input.replace(/'/g, "''").replace(/--/g, "").replace(/\/\*/g, "").replace(/\*\//g, "");
}
const safeUsername = escapeSQL(username);
const safePassword = escapeSQL(password);
const query = `SELECT * FROM users WHERE username = ? AND password = ?`;