0
INYECCIÓN SQL Nombre del Profesor: Ing. José Fernando Castro Domínguez. INTEGRANTES: María Isabel Martínez Millán Elizabet...
<ul><li>Podemos definir inyección SQL como  la vulnerabilidad en la validación de entradas a la base de datos en una aplic...
<ul><li>Una inyección SQL sucede cuando se inserta o &quot;inyecta&quot; un código SQL &quot;invasor&quot; dentro de otro ...
<ul><li>Supongamos que tenemos una aplicación Web en la que el acceso a ciertas secciones está restringido. Para restringi...
<ul><li>Y en la segunda pagina creamos dinámicamente una sentencia SQL que enviamos a la base de datos para la validación....
<ul><li>Si el usuario escribe por ejemplo ‘Admin’ y de contraseña cualquier otra cosa, la sentencia no nos devolverá regis...
<ul><li>Lo peor será que el usuario utilice estos trucos de inyección de SQL para ejecutar código arbitrario en nuestro se...
<ul><li>COMO CORREGIR EL PROBLEMA: </li></ul><ul><li>1. Podemos filtrar las entradas de los usuarios reemplazando la apari...
<ul><li>3.-  Una solución definitiva sería trabajar con procedimientos almacenados. </li></ul><ul><li>El modo en el que se...
<ul><li>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...
<ul><li>1.- La seguridad de los datos es uno de los pilares de la sociedad informatizada en la que vivimos, el no proteger...
<ul><li>La inyección SQL puede obtener datos escondidos, eliminar  o sobrescribir datos de la base de datos hasta lograr e...
 
 
Upcoming SlideShare
Loading in...5
×

Inyeccion sql

1,491

Published on

Published in: Education
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
1,491
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
69
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Inyeccion sql"

  1. 1. INYECCIÓN SQL Nombre del Profesor: Ing. José Fernando Castro Domínguez. INTEGRANTES: María Isabel Martínez Millán Elizabeth Gaytán Sánchez Margarito Demeza Barrera. Iguala, gro., Septiembre 2010
  2. 2. <ul><li>Podemos definir inyección SQL como la vulnerabilidad en la validación de entradas a la base de datos en una aplicación. </li></ul><ul><li>La aplicación puede ser cualquier tipo de software que precise del uso de base de datos, o una aplicación web que interactúa con base de datos para funcionar, ya bien sea en un sistema de búsqueda, extracción, inserción de información o creación de lugares restringidos mediante la creación de usuarios con contraseñas estableciendo diferentes niveles de permisos. </li></ul>
  3. 3. <ul><li>Una inyección SQL sucede cuando se inserta o &quot;inyecta&quot; un código SQL &quot;invasor&quot; dentro de otro código SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el código &quot;invasor&quot; en la base de datos. </li></ul><ul><li>La mayor de las veces estos errores en las SQL son por la ignorancia del lenguaje pero este código puede ser reparado por programadores o personas que tengan el conocimiento suficiente para poder reparar el error. </li></ul>
  4. 4. <ul><li>Supongamos que tenemos una aplicación Web en la que el acceso a ciertas secciones está restringido. Para restringir ese acceso creamos una tabla de usuarios y contraseñas y sólo los usuarios que se validen contra esa tabla podrán acceder a esos contenidos. </li></ul><ul><li>use web-- Nuestra base de datos se llama webgo </li></ul><ul><li>Creamos una tabla para almacenar los pares usuario/contraseña create table usuarios </li></ul><ul><li>Usuario varchar (50) not null primary key, </li></ul><ul><li>Password varchar (50))go </li></ul><ul><li>Introducimos un par de datos de prueba insert into usuarios (Usuario, Password) values ('Admin', '1234')insert into usuarios (Usuario, Password) values ('Usuario', 'abcd') </li></ul>
  5. 5. <ul><li>Y en la segunda pagina creamos dinámicamente una sentencia SQL que enviamos a la base de datos para la validación. </li></ul><ul><li>User: </li></ul><ul><li>Password: </li></ul><ul><li>Si el usuario escribe Admin y 1234 la sentencia creada será: </li></ul><ul><li>“ SELECT Count(*) FROM Usuarios WHERE Usuario=’Admin’ AND Password=’1234’” </li></ul><ul><li>Y como esta sentencia nos devuelve un registro, dejaremos que el usuario entre en la Web. </li></ul>Admin **** Iniciar sesión
  6. 6. <ul><li>Si el usuario escribe por ejemplo ‘Admin’ y de contraseña cualquier otra cosa, la sentencia no nos devolverá registros y no permitiremos entrar a esa persona. </li></ul><ul><li>Pero ¿qué ocurre si el usuario escribe ‘ or ‘1′=’1 como usuario y lo mismo de contraseña? </li></ul><ul><li>En este caso la variable Consulta contendrá la cadena: </li></ul><ul><li>&quot;SELECT Count(*) FROM Usuarios WHERE Usuario = '' or '1'='1' AND password = '' or '1'='1'“ </li></ul><ul><li>Y obviamente esta sentencia nos devuelve registros con lo que el usuario entrará en nuestra Web sin tener permiso. </li></ul>
  7. 7. <ul><li>Lo peor será que el usuario utilice estos trucos de inyección de SQL para ejecutar código arbitrario en nuestro servidor. Sentencias DDL, cambiar permisos, utilizar procedimientos almacenados y un largo etcétera. </li></ul>
  8. 8. <ul><li>COMO CORREGIR EL PROBLEMA: </li></ul><ul><li>1. Podemos filtrar las entradas de los usuarios reemplazando la aparición de ‘ por ‘’ (dos comillas simples) e incluso evitando que los usuarios puedan pasar caracteres como / “ ‘ o cualquier otro que se nos ocurra que puede causar problemas. </li></ul><ul><li>2.Es 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. </li></ul>
  9. 9. <ul><li>3.- Una solución definitiva sería trabajar con procedimientos almacenados. </li></ul><ul><li>El modo en el que se pasan los parámetros a los procedimientos almacenados evita que la inyección SQL pueda ser usada. </li></ul><ul><li>4.- También deberíamos validar los datos que introduce el usuario teniendo en cuenta por ejemplo la longitud de los campos y el tipo de datos aceptados. </li></ul>
  10. 10. <ul><li>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. </li></ul><ul><li>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. </li></ul>PREVENCIÓN
  11. 11. <ul><li>1.- La seguridad de los datos es uno de los pilares de la sociedad informatizada en la que vivimos, el no proteger esta información seria de gran riesgo para la empresa y para el cliente. </li></ul><ul><li>2.-La inyección SQL es una herramienta que nos ayuda para la seguridad de la información se refiere a la debilidad en un sistema permitiendo un ataque para violar la confidencialidad, integridad, disponibilidad, control de acceso y la consistencia del sistema así como de sus datos y aplicaciones. </li></ul>
  12. 12. <ul><li>La inyección SQL puede obtener datos escondidos, eliminar o sobrescribir datos de la base de datos hasta lograr ejecutar comandos peligrosos en la máquina donde está la base de datos, el cual el atacante puede obtener y hasta modificar los datos, e incluso el atacante puede llegar a obtener y manipular archivos, con la consecuencia de poder manejar los datos y el sistema a su antojo y con total libertad. </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×