Descarga la aplicación para disfrutar aún más
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.
Compartir