Error de Inyección de SQL PHP: Solucionado

Identificando el Problema de Inyección SQL en PHP

El Error de Inyección SQL en PHP es uno de los problemas más comunes y graves que atañen a la seguridad web. Al entender cómo ocurre, podemos aprender a evitarlo y reforzar la arquitectura de nuestras aplicaciones.

Comprendiendo el Error de Inyección SQL

En términos simples, es un tipo de ataque que permite al atacante manipular las consultas SQL que una aplicación web hace a su base de datos. Esto puede tener consecuencias graves, como la filtración de información delicada o altaraciones en la estructura de la base datos.

¿Cómo sucede el Ataque de Inyección SQL?

<?php
       $id = $_POST['id'];
       $result = mysqli_query($con, "SELECT * FROM usuarios WHERE id = $id");
    ?>

En este ejemplo, si un atacante ingresa ‘1 OR 1=1’ como ID, la consulta se transforma en “SELECT * FROM usuarios WHERE id = 1 OR 1=1”, que siempre será verdadera y devolverá todos los registros de la tabla ‘usuarios’.

Soluciones para el error de inyección SQL en PHP

<?php
      $id = mysqli_real_escape_string($con, $_POST['id']);
      $result = mysqli_query($con, 'SELECT * FROM usuarios WHERE id = '. $id);
     ?>

En este código se utiliza la función mysqli_real_escape_string para escapar cualquier carácter especial en la entrada del usuario, lo que previene la inyección de SQL.

Usando sentencias preparadas

<?php
      $stmt = $con->prepare('SELECT * FROM usuarios WHERE id = ?')
      $stmt->bind_param('i', $_POST['id']);
      $stmt->execute();
    ?>

Con lo anterior, el valor del ID se pasa como parámetro y se evita la entrada de texto malicioso por parte del atacante. A esto se le llama sentencia preparada.

Conclusión

El Error de Inyección SQL en PHP puede causar problemas graves de seguridad y es importante comprender cómo evitarlo. Utilizar funciones de escape y sentencias preparadas, así como mantenerse informado sobre las mejores prácticas de seguridad, puede ayudar a evitar este problema.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad