Se denomina como Inyección de SQL como «es un método de infiltración de código intruso que se aprovecha de una vulnerabilidad en la validación de los contenidos introducidos en un formulario web y puede permitir la obtención ilegítima de los datos almacenados en la base de datos del sitio web (CCN, 2015, pág. 559).»
Según el Glosario de Términos de Ciberseguridad establecida por la Resolución 1523/2019.
tipo de vulnerabilidad muy frecuente owasp top10 la tiene como ejemplo de vulnerabilidad ya que ante una mala entrada de datos no validada permite extraer información sensible o afectar las tablas
Un ataque de inyección SQL es un tipo de ataque en el que los atacantes intentan ingresar código malicioso en una base de datos, generalmente a través de una entrada de usuario.
Esto permite que los atacantes ejecuten código malicioso en el servidor, lo que puede llevar a la violación de la seguridad de la base de datos.
Para evitar estos ataques, es importante validar todas las entradas de usuario para asegurarse de que no contengan código malicioso.
Esto se puede lograr usando una combinación de validación de tipo de datos, filtrado de caracteres y escapado de caracteres especiales.
El escapado de caracteres especiales es particularmente importante porque los caracteres especiales se usan a menudo para iniciar una inyección SQL.
También es importante usar una API segura para interactuar con la base de datos para evitar las vulnerabilidades de inyección SQL.
Por ejemplo para prevenir una inyección SQL en PHP, puede usar la función mysqlirealescape_string() para escapar los caracteres especiales en la entrada de usuario.
Esto hará que los caracteres potencialmente maliciosos sean inofensivos.
El siguiente fragmento de código escapa la entrada de un usuario antes de usarla en una consulta SQL:
$user_input = $_GET[‘user_input’];
$user_input = mysqli_real_escape_string($conn, $user_input);
$query = «SELECT * FROM table WHERE field=’$user_input'»;