This is a machine translation. The original page (in English) is available here.
Casa>Las noticias del mundo>Declarar la Guerra a los Ataques de Inyección SQL
La parte superior de los Capturadores de teclado
Ver más...

Declarar la Guerra a los Ataques de Inyección SQL

  •  
Valoración de los usuarios: no hay opiniones. Ser la primera vez! 0 - 1 votos
Deberíamos haber erradicado los ataques de inyección SQL por ahora. La inyección SQL se debe a la generación de Internet de la viruela o la poliomielitis -- ha ido para siempre. Las contramedidas son fácilmente disponibles y se entiende. Son fáciles de implementar. Y sin embargo, sigo viendo los titulares como: "Gran Web de hack ataque infecta a más de 500.000 páginas."

Los ataques de inyección SQL siguen estando entre los más fructíferos en contra de sitios y aplicaciones Web. Y ¿por qué no? A partir de un atacante perspectiva, la base de datos detrás de muchas de las aplicaciones Web es donde realmente jugoso objetivos de vivir. Que es donde usted encontrará registros de clientes, números de tarjetas de crédito y otras cosas buenas.

Y ahora los atacantes han comenzado a usar la inyección de SQL para la planta de malware en los sitios Web, de modo que los visitantes a los sitios de obtener sus ordenadores infectados con el malware. Las bases de datos no son sólo donde la jugosa objetivos son; están maduros para la siembra de datos malintencionados que infecta a los ordenadores de otras personas.

Esto aumenta la apuesta y hace que incluso un argumento más convincente para la erradicación de cada inyección SQL defecto en la existencia. Debemos asegurarnos de que no hay futuro de las aplicaciones de SQL inyección de defectos. Echemos un vistazo más de cerca para ver lo que está involucrado.

SQL, o Lenguaje de Consulta Estructurado, es un interpretada lenguaje de base de datos que es comúnmente utilizado por los servidores de aplicaciones en hablar con los servidores de base de datos. Las bases de datos donde, como he dicho, nuestra tienda de cosas como los registros de los clientes. Un registro puede consistir en un nombre de cliente, dirección, dirección de correo electrónico, número de teléfono, información de tarjeta de crédito.

Cómo Funciona

A la vista de los datos del cliente en una base de datos, una consulta SQL se construye en la aplicación servidor y se envía a la base de datos, que debe devolver que la información del cliente y nada más. La consulta podría ser algo como:

select * from clientes where apellido='Smith'
Así que ¿cuál es el problema? Así, en los servidores de la aplicación, el nombre del cliente es generalmente representado como una variable con un valor que entra en la aplicación a través de un formulario Web -- con los datos que provienen de la aplicación de usuario. Así, en Java, la consulta se puede construir algo como lo siguiente:

String query = "Select * from clientes where apellido='" + req.getParameter("apellidos") + "'";
Ver el problema? Así, en la normalidad funcional caso, un usuario introduce un nombre tal como "Smith" en ese campo, pero un atacante podría fácilmente entrar en un valor de "' o '1'='1'-". Que sería el resultado de una consulta como la siguiente que se envían al servidor:

select * from clientes where apellido=" o '1'='1'
Que la expresión Booleana (last_name=" o '1'='1') siempre va a ser verdad, lo que resultará en la base de datos de servidor responde con la totalidad del contenido de los datos del cliente de la tabla. Es decir, nuestro atacante probable que sólo ha tenido éxito en la extracción de los datos de los clientes de cada uno de nuestros clientes. No es buena.

Pero me dijo que el problema es fácil de solucionar. Usted ve, la cuestión de fondo en el escenario anterior es que la intención de la lógica SQL puede ser modificado maliciosamente por formaron los datos del usuario. Pero Java y la mayoría de los Web relacionados con los idiomas nos proporcionan una solución simple llamado a consultas parametrizadas.

En una consulta con parámetros, los datos se pasan a la consulta SQL como datos reales, no como parte de la sintaxis SQL de sí mismo. Sólo se tarda un poco más de esfuerzo para configurar la consulta, pero luego se hace, y los datos proporcionados por un atacante va a hacer nada para alterar el propósito de nuestra consulta.

Cómo solucionarlo

Aquí está lo que nuestros consulta anterior se vería como si se utilizó Java consulta parametrizada mecanismo, conocido como declaraciones preparadas:

String lastName = req.getParameter("apellidos"); String consulta = "Select * from clientes where apellido = ?" PreparedStatement pstmt = conexión.prepareStatement( consulta ); pstmt.setString(1, apellido ); try { conjunto de resultados resultados = pstmt.execute( ); }
OK, así que un par de líneas de código, pero es un simple modelo a seguir. Y los resultados son funcionalmente idénticos a los vulnerables forma, pero sin la vulnerabilidad.

Si nos limitamos a ir a través de nuestras aplicaciones Web y cambiar todas nuestras consultas SQL en la forma de una declaración preparada, podemos aniquilar completamente cada inyección SQL debilidad en el mundo. En serio.

Todavía tendremos un montón de otras cuestiones, como el cross-site scripting (también conocido como "XSS"), sino que le han eliminado este un problema de inyección de SQL en su totalidad.

Yo sé lo que deben estar pensando: no puede ser así de simple, de lo contrario, habríamos acabado con la inyección de SQL años. Eso sería sólo parcialmente cierto. A nivel técnico, es así de sencillo. Pero a nivel humano, no tanto.

Para solucionar el problema de la inyección de SQL, varios pre-condiciones tienen que existir. Uno, tenemos que tener acceso al código fuente de la aplicación en sí. Si nuestra aplicación ha sido subcontratada, o si estamos confiando en el código de terceros, esto puede no ser una cosa tan simple en absoluto.

Y eso es sólo uno de los obstáculos humanos que he escuchado como excusas para no corregir un defecto de seguridad. Hay muchos otros.

Pero vamos, la gente, se merecen algo mejor que el status quo. Nuestras empresas se merecen algo mejor; que nuestros usuarios se merecen algo mejor; de hecho, nuestros clientes se merecen algo mejor. Vamos a dejar de poner excusas y empezar a hacer razones. Hacer un gol para ir a través de su Web, ahora, las aplicaciones y erradicar cada inyección SQL debilidad. Y mientras estás en ello, asegúrese de enseñar a todos y cada uno de sus desarrolladores de software cómo hacer seguro llamadas SQL.

No más la inyección de SQL. No hay más excusas.
Fecha de publicación:
Autor:
Casa>Las noticias del mundo>Declarar la Guerra a los Ataques de Inyección SQL
IMPORTANTE! Instalación de equipo de monitoreo de herramientas en los equipos que no posean o no tienes permiso para monitor puede violar locales, estatales o federales.