Repaso
English
SeguridadBaseSEC-01

¿Cuál es la defensa principal correcta contra la SQL injection?

Opciones

  1. Escapar a mano las comillas de la entrada del usuario
  2. Consultas parametrizadas o prepared statements (Opción correcta)
  3. Ocultar a los usuarios los mensajes de error detallados
  4. Usar peticiones POST en lugar de GET

Respuesta

Consultas parametrizadas / prepared statements (o un ORM que las use)

Por qué

La SQL injection ocurre cuando la entrada del usuario se pega en el texto SQL, de modo que una entrada astuta cambia la propia consulta (por ejemplo ' OR 1=1 -- devuelve todas las filas, o '; DROP TABLE users; --).

Con consultas parametrizadas, el SQL y los valores se envían por separado; la base de datos nunca ejecuta la entrada como código.

Escapar a mano es fácil de hacer mal. Además, da al usuario de base de datos de la app solo los permisos que necesite.

Recuerda

Nunca construyas SQL formateando strings; usa parámetros.

Términos clave

Practica esta pregunta en Repaso