Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)
Inyección sql1
1. UNIVERSIDAD TECNOLÓGICA DE LA REGIÓN NORTE DE GUERRERO INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN INYECCIÓN SQL Profesor: Ing. José Fernando Castro Domínguez ALUMNOS: Estrada Aranda Arely Montes Estrada María Natividad Román Rangel Eduardo Iguala, gro., Septiembre 2010
3. Concepto La inyección SQL es el ataque vía web, que aprovecha errores en la filtración de datos introducidos por el usuario, y que permiten a un atacante, tener control de cierta aplicación. Este tipo de errores puede permitir a usuarios malintencionados acceder a datos a los que de otro modo no tendrían acceso y, en el peor de los casos, modificar el comportamiento de nuestras aplicaciones.
4. Funcionamiento Una inyección SQL sucede cuando se inserta o “inyecta” un código SQL “invasor” dentro de otro código SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el código “invasor” en la base de datos.
5. Ejemplo Asumiendo que el siguiente código está en una aplicación web y que existe un parámetro “nombreUsuario” que contiene el nombre de usuario que nosotros le demos, la inyección SQL es posible: Consulta:=“SELECT*FROM usuarios WHERE nombre=“+ nombreUsuario +”;” Si el usuario escribe su nombre, digamos “Alicia”, nada anormal sucedería, la aplicación generaría una sentencia SQL similar a la siguiente, que es SELECT * FROM usuarios WHERE nombre = ‘Alicia’; Pero si un usuario malintencionado escribe como nombre de ‘Alicia’; DROP TABLE usuarios; SELECT * FROM datos WHERE ‘=‘ = ‘-’, se generaría la siguiente consulta SQL: SELECT * FROM usuarios WHERE nombre = ‘Alicia’; DROP TABLE usuarios; SELECT * FROM datos WHERE ‘-’ = ‘-’;
6. Herramientas o consejos Limitar al máximo los permisos del usuario que ejecuta estas sentencias para evitar posibles problemas. Por ejemplo utilizando un usuario distinto para las sentencias SELECT, DELETE, UPDATE y asegurándonos que cada ejecución de una sentencia ejecute una sentencia del tipo permitido.
7. Prevención La forma más común de detectar ataques de inyección SQL es mediante la búsqueda de firmas SQL en la secuencia HTTP entrante. Por ejemplo, en busca de comandos SQL, tales como UNION, SELECT o xp_. El problema con este enfoque es la alta tasa de falsos positivos. La capacidad de discernir valores de los parámetros de la petición HTTP y toda la capacidad de manejar varios escenarios de codificación son una necesidad en este caso.
8. Conclusión Inyección SQL es el código malicioso, que está en medio del código bueno, por lo que Al ejecutarse esa consulta en la base de datos, el código SQL inyectado también se ejecutará y podría hacer un sinnúmero de cosas, como insertar registros, modificar o eliminar datos, autorizar accesos e, incluso, ejecutar código malicioso en el computador.