Busqueda Segura PROTEGIDO
Busqueda: test
No se encontraron clientes con "test"
Diferencias clave con la version vulnerable
buscar.php (VULNERABLE)
// Concatenacion directa = PELIGRO
$q = "SELECT * FROM clients
WHERE name LIKE '%" . $_GET['q'] . "%'";
$conn->query($q);
// Sin escapar = XSS
echo $row['name'];
buscar_secure.php (SEGURO)
// Prepared statement = SEGURO
$stmt = $pdo->prepare("SELECT * FROM clients
WHERE name LIKE ?");
$stmt->execute(['%' . $q . '%']);
// Escapado = Sin XSS
echo htmlspecialchars($row['name']);
Regla de oro:
Nunca concatenes input del usuario directamente en SQL.
Siempre usa prepared statements (PDO o mysqli con bind_param).