Logo Studenta

Preparación de consultas SQL seguras en PHP (PDO)

¡Estudia con miles de materiales!

Vista previa del material en texto

Preparación de consultas SQL seguras en PHP (PDO) 
 
La preparación de consultas SQL seguras es fundamental para evitar ataques de inyección 
SQL y proteger tus aplicaciones contra posibles vulnerabilidades. La extensión PDO (PHP 
Data Objects) proporciona un mecanismo seguro para trabajar con bases de datos y permite 
utilizar consultas preparadas para evitar la inserción de datos no deseados en las consultas 
SQL. 
 
A continuación, te muestro cómo preparar consultas SQL seguras utilizando PDO en PHP: 
 
1. Conexión a la base de datos: 
 
// Configuración de la conexión 
$servername = "localhost"; // Cambiar por el nombre del servidor de la base de datos 
$username = "usuario"; // Cambiar por el nombre de usuario de la base de datos 
$password = "contraseña"; // Cambiar por la contraseña de la base de datos 
$dbname = "nombre_base_datos"; // Cambiar por el nombre de la base de datos 
 
// Crear la conexión con PDO 
try { 
 $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, 
$password); 
 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 echo "Conexión exitosa."; 
} catch (PDOException $e) { 
 die("Error en la conexión: " . $e->getMessage()); 
} 
 
2. Consultas preparadas: 
 
Las consultas preparadas utilizan marcadores de posición (placeholders) en lugar de valores 
directos en la consulta. Los valores reales se enlazan con los marcadores antes de ejecutar la 
consulta, lo que evita la inyección SQL. 
 
// Ejemplo de consulta SELECT segura 
$nombre = "Juan"; 
$email = "juan@example.com"; 
 
$stmt = $conn->prepare("SELECT id, nombre, email FROM usuarios WHERE nombre = 
:nombre AND email = :email"); 
$stmt->bindParam(':nombre', $nombre); 
$stmt->bindParam(':email', $email); 
 
$stmt->execute(); 
 
$resultado = $stmt->fetchAll(PDO::FETCH_ASSOC); 
 
foreach ($resultado as $fila) { 
 echo "ID: " . $fila["id"] . ", Nombre: " . $fila["nombre"] . ", Email: " . $fila["email"] . "<br>"; 
} 
 
En este ejemplo, utilizamos marcadores de posición `:nombre` y `:email` en la consulta. 
Luego, utilizamos `bindParam()` para enlazar los valores reales de `$nombre` y `$email` con 
los marcadores de posición. 
 
3. Cierre de la conexión: 
 
Recuerda cerrar la conexión después de haber terminado de trabajar con la base de datos. 
 
// Cerrar la conexión 
$conn = null; 
 
La utilización de consultas preparadas con marcadores de posición proporciona una forma 
segura de interactuar con la base de datos, evitando posibles ataques de inyección SQL. Es 
importante siempre utilizar este enfoque para proteger tus aplicaciones contra 
vulnerabilidades de seguridad relacionadas con la manipulación de datos en las consultas 
SQL.

Continuar navegando

Materiales relacionados