Alberto Rivera Tavera Microsoft Student Partner

Slides:



Advertisements
Presentaciones similares
Desarrollo de aplicaciones seguras con.NET David Carmona División de Desarrolladores y Plataforma Microsoft Ibérica.
Advertisements

integridad referencial
LENGUAJE ESTRUCTURADO DE CONSULTA “SQL”
Base de Datos Orientada a Objetos (OODBMS)
Introducción a Transact-SQL
Desarrollo de una Aplicación Web sobre tecnología Microsoft .NET
ADMINISTRACION DE REDES SECUENCIA DE COMANDOS EN SITIOS CRUZADOS(XSS)
Desarrollo de Aplicaciones para Internet
Data set Data table Base de datos con servidor de base de datos String conexión Objeto conexión.
PRIVILEGIOS DE ACCESO EN INFORMIX
Inyección de SQL.
Desarrollo de sitios web con PHP y MySQL Tema 7: Seguridad José Mariano González Romano
TECNOLOGÍA IDC Internet Database Connector Trinitario Gómez López.
PL/SQL Francisco Moreno Universidad Nacional.
Clase 9 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
Acceso a datos con ADO.NET
SESIÓN 2. Completados por el tipo de objeto sobre el que actúan y el objeto concreto: CREATE DATABASE mibase ; Permite crear una base de datos llamada.
ADMINISTRACION DE REDES SECUNECIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE GABRIEL ANDRES AGUIRRE JARAMILLO INSTITUTO TECNOLOGICO.
Los Diez Riesgos Más Importantes en Aplicaciones WEB Top A1-Inyección Oscar William Monsalve Luis Alberto Suarez Jorge Eliecer Betancur Diana Marcela.
MSC. RUTH VEGA BASES DE DATOS SQL SERVER
WEB VULNERABLE DVWA Universidad de Almería
The OWASP Foundation OWASP AppSec Aguascalientes 2010 Guía de Desarrollo Seguro Francisco Aldrete Miembro de OWASP capítulo Aguascalientes.
tipo de datos uniqueidentifier
1 Microcomputación II Unidad II Administración de datos con MS-SQL Server y Visual Basic Introducción a Transact – SQL: Select, Delete, Update. Tema:
CONCEPTOS BASICOS SQL SERVER SEBASTIAN MARTINEZ GARCIA.
T ABLESPACES EN O RACLE JULIÁN JOSÉ TORRES ZABALA PEDRO JAVIER SILVA CRISTIAN CAMILO RAMIREZ JULIAN ARJONA UNIVERSIDAD DEL TOLIMA INGENERIA DE SISTEMAS.
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
ATAQUES POR INYECCION DE CODIGO SQL
REALIZADO POR: MERINO MERINO JORGE MORI CORREA JHONATAM VIDARTE DELGADO JAVIER.
Bases de datos:MYSQL. ¿Qué es una base de datos? Colección de datos persistentes, relacionados y estructurados. Persistentes: se almacenan en archivos.
Programación en Visual Basic Lección #8: SQL Por Antonio F. Huertas.
Autora: Francisca Montañez Muñoz
UD 1: “Adopción de pautas de seguridad informática” Análisis de las principales vulnerabilidades de un sistema informático. Luis Alfonso Sánchez Brazales.
T.P. de informática: Los virus informáticos.
REFERENCIA DIRECTA INSEGURA A OBJETOS
Introducción a Bases de Datos en Microsoft Access Programación de Computadoras 2 Sección: P.
Introducción a ataques de tipo inyección: Inyección SQL
LENGUAJE SQL.
Structured Query Language (Lenguaje Estructurado de Consultas)
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
LENGUAJE ESTRUCTURADO DE CONSULTAS
Lenguaje Estructurado de Consulta
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
Prof. Daniel Obando Fuentes
Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a la vista y una sentencia SQL SELECT válida. CREATE.
Se producen cuando una aplicación recibe datos no confiables y estos no han sido validados adecuadamente antes de procesarlos, lo cual puede llevar a que.
SQL Lenguaje Estructurado de Consulta MATERIA: diseñar sistemas de información ALUMNO: sarmiento flores Liliana Guadalupe GRUPO: 4° “A” TURNO: matutino.
Unidad 4 SEGURIDAD 4.1 Tipos de usuarios
Tema 11 Bases de Datos y el Lenguaje SQL
Uso de las herramientas de consulta de Transact-SQL
Análisis de las principales vulnerabilidades de un sistema informático. Gabriel Montañés León.
Consultas SQL. SQL SQL es un lenguaje de consulta estructurado (Structured Query Languague). Se utiliza para: Eliminar Modificar Consultar La base de.
Búsquedas Filtradas Consiste en buscar en una tabla de la base de datos, según un criterio. Para esto se pueden utilizar muchos tipos de sentencias en.
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
UNIVERSIDAD MANUELA BELTRAN Facultad de Ingeniería
DISPARADORES Y SISTEMAS DE GESTION DE BASE DE DATOS DE SQL
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
FUNDAMENTOS INFORMÁTICOS
Usuarios. Colocar el servidor en el modo de autenticación Windows/SqlServer. En SQL Server Management Studio, click derecho, Propiedades en la Instancia.
Análisis de las principales vulnerabilidades de un sistema informático. Javier Rodríguez Granados.
SEGURIDAD INFORMÁTICA Álvaro Torres Amaya Universidad Manuela Beltrán.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
INTEGRACION DE LAS TECNOLOGIAS DE LA INFORMACION Y COMUNICACION Implementación de base de datos (Lenguaje de manipulación de datos) Ing. Linda Masias Morales.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
DML Transact SQL Sesión IX Introducción a los procedimientos almacenados.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
Aspectos de Seguridad en paginas Web
Transcripción de la presentación:

Alberto Rivera Tavera Microsoft Student Partner

ATENCIÓN ESTA CHARLA ES ÚNICAMENTE CON FINES ACADÉMICOS. EN NINGÚN MOMENTO EL ORADOR BUSCA MOTIVAR EL USO DE PRÁCTICAS POCO ÉTICAS A NIVEL PROFESIONAL. POR EL CONTRARIO, PRETENDE CONTRIBUIR A LA PREVENCIÓN DE ESTE TIPO DE TÉCNICAS MALINTENCIONADAS SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)2

AGENDA ¿Qué es SQL Injection? ¿Cuándo se presenta este problema? Ataques a las bases de datos ¿Cómo prevenir estos ataques? Conclusión SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)3

¿Qué es SQL Injection? Vulnerabilidad informática a nivel de base de datos de una aplicación El origen es el filtrado incorrecto de variables en las partes del programa con código SQL. Un programa hecho con descuido o ignorancia sobre el problema, podrá ser vulnerable y comprometerá la seguridad del sistema SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)4

¿Cuando se presenta este problema? La inyección de código SQL ocurre cuando se inserta 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 Tomado de: Wikipedia SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)5

Ataques a las bases de datos "SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';“ Asumimos que… nombreUsuario = “Camila” La consulta a la base de datos se ejecutaría así: SELECT * FROM usuarios WHERE nombre = ‘Camila’; SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)6

Un ataque sencillo de autenticación "SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';“ Primera inyección de código malicioso… nombreUsuario = “’ OR 1 = 1 --” La consulta a la base de datos se ejecutaría así: SELECT * FROM usuarios WHERE nombre = ‘’ OR 1 = 1 --’; SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)7

Ataques más peligrosos… Otro ejemplo de código malicioso: nombreUsuario = “'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%’” La consulta a la base de datos se ejecutaría así: SELECT * FROM usuarios WHERE nombre = ‘’; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%’; SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)8

Ataques más peligrosos… (Cont) Un caso grave: Eliminar la base de datos. nombreUsuario = “'; USE Master GO DROP DATABASE miBasedeDatos GO” La consulta a la base de datos se ejecutaría así: SELECT * FROM usuarios WHERE nombre = ‘’; USE Master GO DROP DATABASE miBasedeDatos GO; SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)9

¿Cómo prevenir estos ataques? Utilizar variables por parámetros Limpieza de código “malicioso” Creación de procedimientos almacenados SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)10

Utilizar variables por parámetros Al pasar por parámetros las variables, garantizamos que la consulta a la base de datos no se concatene. Incorrecto Correcto SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)11 SqlConnection con = new SqlConnection(stringConnection); con. Open(); SqlCommand com = new SqlCommand("SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "'", con) SqlDataAdapter da = new SqlDataAdapter(com) … SqlConnection con = new SqlConnection(stringConnection); con. Open(); SqlCommand com = new SqlCommand("SELECT * FROM usuarios WHERE nombre con); SqlParameter par = new par.Value = nombreUsuario; com.Parameters.Add(par); SqlDataAdapter da = new SqlDataAdapter(com) …

Limpieza de código malicioso Antes de ejecutar la consulta en base de datos, eliminamos de las variables, los caracteres que son propios de una sentencia SQL. SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)12 String nombreUsuario = this.txtNombreUsuario.txt; nombreUsuario = nombreUsuario.Replace("--", ""); nombreUsuario = nombreUsuario.Replace("'", ""); nombreUsuario = nombreUsuario.Replace("SELECT", ""); nombreUsuario = nombreUsuario.Replace(“OR", ""); nombreUsuario = nombreUsuario.Replace(“AND", ""); nombreUsuario = nombreUsuario.Replace(“LIKE", ""); …

Creación de procedimientos almacenados La aplicación llama al procedimiento que se encuentra en el motor de bases de datos. No se arma la consulta en la aplicación. SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)13 SqlConnection con = new SqlConnection(ConnectionString); con.Open(); SqlCommand com = new SqlCommand(); com.CommandType = CommandType.StoredProcedure; com.CommandText = "up_IniciarSesión"; SqlParameter par = new par.Value = nombreUsuario; com.Parameters.Add(par); SqlDataAdapter da = new SqlDataAdapter(com); …

Conclusión SQL Injection es un problema de máxima prioridad para el equipo de desarrollo. Es importante realizar buenas prácticas de programación para prevenir ataques. NUNCA envíen sentencias SQL concatenadas desde la aplicación. SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)14

¿Preguntas? Contacto. Alberto Rivera Tavera SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)15

Recursos Wikipedia – Blog SQL Server – MSDN: Artículo: “Stop SQL Injection Attacks Before They Stop You” – LInjection/ LInjection/ Iquos-BI – SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)16

GRACIAS SQL INJECTION: AMENAZA PRESENTE. ALBERTO RIVERA TAVERA (MSP)17