¿Qué es la inyección SQL?
Una de las clases más grandes de vulnerabilidades web se conoce como "inyección SQL" o SQLi. El lenguaje de consulta estructurado, también conocido como SQL, es el lenguaje utilizado para interactuar con la mayoría de las bases de datos, aunque se utilizan diferentes variantes del lenguaje según la plataforma de la base de datos. Cualquier sitio web que almacene datos del usuario, como información de la cuenta, o que proporcione la funcionalidad de carga del usuario, como un sitio web de alojamiento de imágenes, utilizará una base de datos para almacenar esos datos.
Sugerencia: SQL generalmente se pronuncia "ess cue ell" o "secuela", siendo la primera opción la más común en inglés británico y la segunda más común en inglés americano. Ambas pronunciaciones se entienden generalmente en el contexto de la conversación de la base de datos.
¿Qué es SQLi?
SQLi es una vulnerabilidad en la que los desarrolladores web que diseñan código que se comunica entre el servidor web y la base de datos no implementan protecciones contra los comandos SQL enviados por un usuario. El problema es que puede salir de las declaraciones de la base de datos y agregar nuevos argumentos o una declaración completamente nueva. La segunda declaración de la base de datos o modificada puede realizar una variedad de acciones, incluidas las eliminaciones potencialmente a gran escala o la pérdida de datos.
¿Cómo funcionan los permisos de canal en Discord?Los exploits generalmente giran en torno a hacer verdaderas las afirmaciones existentes en todas las circunstancias o proporcionar un segundo comando por lotes que realiza una acción específica, como eliminar o ver todos los datos. Por ejemplo, una declaración SQL para acceder a un sitio web puede verificar si el nombre de usuario y la contraseña enviados coinciden con una entrada en la base de datos. Para intentar acceder a un exploit de inyección SQL, puede intentar agregar una cláusula "o true" como "o 1 = 1". Esto haría que el comando fuera del tipo "iniciar sesión con [this] nombre de usuario, si la contraseña es [this], o esta afirmación es verdadera ”.
Cómo prevenir SQLi
SQLi era una forma muy común para que los sitios web piratearan su base de datos y luego se filtraran en línea. Gracias a un esfuerzo concertado para garantizar que la conciencia de seguridad sea parte de la capacitación de los desarrolladores, esta clase de vulnerabilidades se ha resuelto en gran medida y rara vez se ve más.
La forma correcta de prevenir SQLi es usar declaraciones preparadas, también conocidas como consultas de parámetros. Tradicionalmente, las declaraciones SQL se declaran y la entrada del usuario se concatena en ellas durante esa declaración. Con las declaraciones preparadas, se escribe el comando de la base de datos y luego una función separada ejecuta el comando e inserta los datos del usuario. Si bien esto puede parecer una pequeña diferencia, cambia completamente la forma en que se maneja el comando. La diferencia evita la ejecución de comandos SQL significativos y trata todas las entradas del usuario como una cadena, evitando que ocurra la inyección SQL.