Inyección SQL

Una inyección SQL es una forma de ciberataque que tiene como objetivo bases de datos-vinculadas a sitios web y aplicaciones web. Estos ataques aprovechan el software del servidor del sitio web y de la base de datos que está mal configurado para engañar a un servidor y hacer que interprete instrucciones SQL que, de otro modo, no ejecutaría. Estos ataques pueden revelar información personal y financiera confidencial, permitir que un atacante cambie o elimine información almacenada en una base de datos, o proporcionar otro tipo de acceso no autorizado.

Un sitio web es vulnerable a una inyección SQL cuando acepta datos introducidos por el usuario desde un formulario de texto y los incluye como parte de una consulta SQL. En lugar de rellenar el campo del formulario con la información esperada como un (nombre de usuario), el atacante introduce una cadena de texto que modifica la consulta SQL. Por ejemplo, una consulta hipotética podría comenzar con SELECT UserID, Name, Password FROM Users WHERE UserID = , seguida de los datos introducidos en un campo de formulario de ID de usuario. Si el usuario introduce su ID de usuario, la consulta funciona como se espera y muestra su información.

Un atacante inserta texto inesperado en una instrucción de consulta para modificarla
Un atacante inserta texto inesperado en una instrucción de consulta para modificarla

Sin embargo, si el servidor inserta el texto introducido en la consulta sin restricciones, un atacante puede utilizarlo para modificar la propia instrucción de consulta SQL. Si, en lugar de un ID de usuario, alguien introduce el texto 317 OR 1=1, la consulta se convierte en SELECT UserID, Name, Password FROM Users WHERE UserID = 317 OR 1=1;. Como OR 1=1 siempre da como resultado verdadero, anula el ID de usuario; en su lugar, la consulta devuelve los ID de usuario, nombres y contraseñas de todas las entradas de la tabla Users. Otros tipos de inyección de código pueden permitir que un atacante inicie sesión como administrador de un sitio, elimine registros o tablas de una base de datos o, en algunos casos extremos, inyecte y ejecute scripts de shell y otro código.

Un administrador de sitios web puede evitar los ataques de inyección SQL manteniendo actualizado el software del servidor. También es importante «sanear» las entradas de la base de datos restringiendo el texto introducido o filtrando determinados caracteres. Los administradores de sitios web también pueden parametrizar sus consultas SQL mediante marcadores de posición en la consulta que hagan referencia a los datos introducidos por el usuario, en lugar de insertarlos directamente en la consulta.

Actualizado March 20, 2023 por Brian P.

quizPon a prueba tu conocimiento

What is the minimum RAM requirement for Windows 11?

A
2 GB
0%
B
4 GB
0%
C
6 GB
0%
D
8 GB
0%
Correct! Incorrect!     View the Windows 11 definition.
More Quizzes →

El diccionario informático Tech Terms

La definición de Inyección SQL en esta página es una definición original escrita por los autores de TechTerms.com. Si desea hacer referencia a esta página o citar esta definición, utilice la barra de cita verde directamente debajo de la definición.

Nuestro objetivo es explicar la terminología informática de manera sencilla y comprensible. Nos esforzamos por la precisión y la claridad en cada definición que publicamos. Si tiene comentarios o desea sugerir un nuevo término técnico, contáctenos.

El boletín de Tech Terms

¡Mejora tu conocimiento técnico con nuestro boletín diario o semanal! Suscríbete hoy y recibe nuevos términos y cuestionarios en tu bandeja de entrada.

Suscríbase al boletín gratuito de TechTerms

¿Con qué frecuencia desea recibir un correo?

Puede cancelar su suscripción o cambiar la frecuencia en cualquier momento usando los enlaces disponibles en cada correo. ¿Preguntas? Contáctenos.

Nota: El boletín se envía en inglés.