SEGURIDAD EN LAS BASES DE DATOS



Documentos relacionados
PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

Restricciones de dominio: Conjunto de valores y de operaciones permitidas sobre ellos.

Sistema Gestor de Bases de Datos. Un SGBD debe permitir: Manipular la base de datos: realizar consultas, actualizarla, generar informes.

Administración de un SGBD relacional

Asignatura: Administración de Bases de Datos

PROCEDIMIENTOS ALMACENADOS

Universidad Veracruzana Facultad de Estadística e Informática

Laboratorio de Programación III

El Sistema Gestor de Base de Datos (DBMS)

Objetivos y Temario CURSO MySQL 5

PHP y MySQL Domine el desarrollo de un sitio Web dinámico e interactivo (3ª edición)

Manual de Sentencias Básicas en SQL

- 1 - Mg. Abril Saire Peralta

BASES DE DATOS. Ingeniería Informática. Matemáticas e Informática

El Modelo Relacional (5 de 5)

Bases de Datos. Diseño y Programación Avanzada de Aplicaciones. Curso

PROGRAMACIÓN CON ACCESO A DATOS

FUNDAMENTOS DE BASES DE DATOS TEMA 3

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

A1-Inyección (SQL,OS Y LDPA)

Arquitectura del SGBD

UNIDAD I. Universidad del Zulia Costa Oriental del Lago. Conceptos Básicos

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

UNIDAD I Introducción al Sistema Manejador de Base de Datos (DBMS)

SQL INJECTION. Benitez, Marcelo Chinikailo, Cristian De la Cruz, Leonardo Klas, Julián Criptografía y Seguridad Informática.

Tema 1.- Gestión y diseño de bases de datos

SEGURIDAD INFORMATICA. Vulnerabilidades

Seguridad y Acceso a Bases de Datos

Políticas de Seguridad Para los Sistemas de Aprendizaje en Línea y de Gestión Educativa

Administración de Bases de Datos

Base de Datos JDBC. Unidad: 1 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

APÉNDICE A: ACCESO A UNA BASE DE DATOS CON JDBC

Universidad Nacional de Costa Rica Administración de Bases de Datos

Desarrollo Web con PHP

Por qué nos preocupa la seguridad?

Java y Access. 4. En nuestra pantalla aparecerá ahora la pestaña DSN usuario seleccionada. Para crear un nuevo perfil haremos click en Agregar...

Concepto. 1963, en un simposio celebrado en California, USA. Conjunto de información relacionada que se encuentra agrupada ó estructurada.

Módulo Call Center. Guía de instalación v 1.2

GUIA DE ESTUDIO PARA EXTRAORDINARIO Sub II Aplica sistemas de informacion y administracion de bases de datos

ANEXO E Gestión de roles y responsabilidades

Computación Web (Curso 2013/2014)

Tópicos Avanzados de Programación (TAP3501)

Tema II: El modelo relacional de datos. (2.7) Automatización

<?php $conexion= odbc_connect("midsn", "", ""); $query = "SELECT * FROM Contactos"; $resultado = odbc_do($conexion, $query);

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

ESQUEMA DE SEGURIDAD KEPLER 80

Objetivos y Temario CURSO PHP Y MySQL

Bases de datos 1. Teórico: Introducción

Hacking Ético Web. I Jornadas Tecnológicas CEEPS Carlos García García i52gagac@uco.es

Tema 11 Bases de datos. Fundamentos de Informática

Guía práctica SQL. (c) Francisco Charte Ojeda

Bases de Datos Relacionales y SQL: Una Introducción

SQL Injection. 1º Edición - 11 y 12 de Mayo Montevideo, Uruguay

PL/SQL avanzado: Secuencias, triggers, cursores y subprogramas

Ing Eddy Ruiz Largaespada

BASES DE DATOS TEMA 1 PERSPECTIVA DEL ÁREA DE BASES DE DATOS

POLITICA DE SEGURIDAD DE LA INFORMACION INDEA INGENIERIA DE APLICACIONES S.L

Tema 1. Introducción a MySQL. José Muñoz Jimeno Octubre 2015

Tipos de datos en SQL. SQL. DDL (Data Definition Language) CREATE DOMAIN CREATE TABLE CREATE TABLE. CREATE TABLE con restricciones de atributo

Programación en lenguajes estructurados de aplicaciones de gestión. Código: J62.13 Nivel: 3

Están almacenados de acuerdo a la estructura del sistema y van a ser procesados para convertirse en información:

Seguridad y Competencias Profesionales Tema 2: Introducción a la Seguridad

6.1. Introducción. Guía 5. SQL.

UNIVERSIDAD AUTÓNOMA DE CHIAPAS Facultad de Contaduría y Administración, Campus I

Anexo 3 COMPONENTES DE SQL SERVER. Los DDL (Data Definition Languaje) que permiten crear y definir nuevas

Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación. UNIDAD IV SEGURIDAD

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

SEGURIDAD INFORMATICA CORPORATIVA

FUNDAMENTOS DE BASE DE DATOS. Introducción

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

Definición. Tema 1: Introducción

Definiciones Básicas

Introducción a las Bases de Datos

Programación páginas web con PHP

INTRODUCCIÓN. Bases de Datos y Sistemas de Información. Instituto de Computación, Facultad de Ingeniería, UdelaR 2017

Kumbia ActiveRecord Documentation

TEMA 3 SEGURIDAD LOGICA. Realizado por : Mila Leal

Seguridad en Sistemas de Bases de Datos

PRESENTACIÓN TRABAJO FIN DE GRADO

Instituto Profesional DuocUC Escuela de Ingeniería Uso y contenido del Diccionario de Datos

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO

PO-1TI-001. Código: Versión: Elaborado por: - Gerencia de IT. Página: Revisado por: - Gerencia de IT. Page 1 of 5

ARTE I BASE DE DATOS EN JAVA

Diseño de bases de datos

Amenazas a Aplicaciones Web Ing. Mauricio Andrade Guzmán. Subdirección de Seguridad de la Información/UNAM-CERT

Concepto de vista. (con ciertas limitaciones). nivel físico) Una vista es una tabla virtual (no tiene una correspondencia a

SQL SERVER Para ingresar a la ventana de administración del SQL Server, proceda a realizar los siguientes pasos:

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

Bases de datos. Diseño y gestión

BASES DE DATOS TEMA 1. Introducción a las Bases de Datos

ACCESO A BASES DE DATOS

Introducción a Bases de Datos. Pablo Zaidenvoren

En este curso se presenta un análisis profundo de la base de datos MySQL para los sistemas operativos Windows y Linux.

Programación de la asignatura BDA ( )

Pre-Taller Gestión de Privilegios de Usuarios 2. Manipulación de Vistas 3. Creación y manipulación de Triggers (Introducción al uso de PL/pgsql)

SEGURIDAD EN APLICACIONES WEB. Autor: Siler Amador Donado

Seguridad en Sistemas y Redes de Telecomunicación

Conceptos de DBMS Y Arquitectura

INTRODUCCIÓN A LAS BASES DE DATOS. L.I Gerardo Benavides Pérez

Transcripción:

SEGURIDAD EN LAS BASES DE DATOS

DEFINICIÓN DE UN ESQUEMA DE SEGURIDAD Al concepto de seguridad también se le puede llamar privacidad. El problema de la seguridad consiste en lograr que los recursos de un sistema sean, bajo toda circunstancia, utilizados para los fines previstos.

LA FIABILIDAD DEL SISTEMA EL CONCEPTO DE SEGURIDAD LO MEDIMOS EN: La protección del sistema frente a ataques externos. La protección frente a caídas o fallos en el software o en el equipo. La protección frente a manipulación por parte de usuarios no autorizados.

PRINCIPIOS BÁSICOS PARA LA SEGURIDAD Suponer que el diseño del sistema es público: El defecto debe ser: sin acceso. Chequear permanentemente. Los mecanismos de protección deben ser simples, uniformes y construidos en las capas más básicas del sistema.

MEDIDAS DE SEGURIDAD FÍSICAS: Controlar el acceso al equipo. mediante tarjetas de acceso PERSONAL: Acceso solo de personal autorizado. identificación directa de personal SGBD: Uso de herramientas que proporcione el SGBD perfiles de usuario, vistas, restricciones de uso de vistas

MEDIDAS DE SEGURIDAD HAY DOS TIPOS DE SEGURIDAD: DIRECCIONAL Se usa para otorgar y revocar privilegios a los usuarios a nivel de archivos, registros o campos en un modo determinado (consulta o modificación).

MEDIDAS DE SEGURIDAD HAY DOS TIPOS DE SEGURIDAD: OBLIGATORIA Sirve para imponer seguridad de varios niveles tanto para los usuarios como para los datos. Para eso se utilizan mecanismos de protección.

REQUISITOS PARA LA SEGURIDAD DE LAS BD La base de datos debe ser protegida contra el fuego, el robo y otras formas de destrucción. Los datos deben ser reconstruibles, ya que siempre pueden ocurrir accidentes. Los datos deben poder ser sometidos a procesos de auditoria. El sistema debe diseñarse a prueba de intromisiones, no deben poder pasar por alto los controles. Ningún sistema puede evitar las intromisiones malintencionadas, pero es posible hacer que resulte muy difícil eludir los controles. El sistema debe tener capacidad para verificar que sus acciones han sido autorizadas. Las acciones de los usuarios deben ser supervisadas, de modo tal que pueda descubrirse cualquier acción indebida o errónea.

CARACTERÍSTICAS PRINCIPALES El objetivo es proteger la Base de Datos contra accesos no autorizados. LAS 3 PRINCIPALES CARÁCTERÍSTICAS DE LA SEGURIDAD EN UNA BASE DE DATOS SON: La Confidencialidad de la información La Integridad de la información La Disponibilidad de la información

TIPOS DE USUARIOS HAY DOS TIPOS DE USUARIOS: Usuario con derecho a crear, borrar y modificar objetos y que además puede conceder privilegios a otros usuarios sobre los objetos que ha creado. Usuario con derecho a consultar, o actualizar, y sin derecho a crear o borrar objetos. Privilegios sobre los objetos, añadir nuevos campos, indexar, alterar la estructura de los objetos, etc.

IDENTIFICACIÓN Y AUTENTIFICACIÓN En un SGBD existen diversos elementos que ayudan a controlar el acceso a los datos. En primer lugar el sistema debe identificar y autentificar a los usuarios utilizando alguno de las siguientes formas:

IDENTIFICACIÓN Y AUTENTIFICACIÓN Código y contraseña Identificación por hardware Conocimiento, aptitudes y hábitos del usuario Información predefinida (Aficiones, cultura )

IDENTIFICACIÓN Y AUTENTIFICACIÓN Además, el administrador deberá especificar los privilegios que un usuario tiene sobre los objetos: Usar una B.D. Consultar ciertos datos Actualizar datos Crear o actualizar objetos Ejecutar procedimientos almacenados Referenciar objetos Indexar objetos Crear identificadores

MATRIZ DE AUTORIZACIÓN La seguridad se logra si se cuenta con un mecanismo que limite a los usuarios a su vista o vistas personales. La norma es que la base de datos relacionales cuente con dos niveles de seguridad: Relación: Puede permitírsele o impedírsele que el usuario tenga acceso directo a una relación. Vista: Puede permitírsele o impedírsele que el usuario tenga acceso a la información que aparece en un vista.

INYECCIÓN SQL QUÉ ES LA INYECCIÓN SQL?

INYECCIÓN SQL Ejemplo de inyección SQL SELECT * FROM usuarios WHERE usuario = " + Usuario + and password = "+ pass + ;

INYECCIÓN SQL Un usuario cualquiera colocaría su nombre y su password de la siguiente manera: SELECT * FROM usuarios WHERE usuario = ' pepe ' and password =' 020304 '

INYECCIÓN SQL Hasta aquí todo normal, pero un usuario podría modificar el campo password: SELECT * FROM usuarios WHERE usuario = ' pepe ' and password =' 020304 ' OR password LIKE '%'

INYECCIÓN SQL Como hemos visto la inyección SQL se ha hecho con el fin de burlar la restricción de acceso, pero se pueden realizar cosas más desastrosas en la BD, como por ejemplo: DROP TABLE usuarios

PROTEGERSE DE INYECCIÓN SQL ASIGNACION DE MÍNIMOS PRIVILEGIOS Debe tener los privilegios necesarios, ni mas ni menos. VALIDAR TODAS LAS ENTRADAS Especifique el tipo de dato de entrada, si son números, asegúrese de que son solo números. EMPLEO DE PROCEDIMIENTOS ALMACENADOS Utilizar procedimientos almacenados y aceptar los datos del usuario como parámetros en lugar de comandos sql. UTILIZAR COMILLAS DOBLES EN LUGAR DE SIMPLES Puesto que las comillas simples finalizan las expresiones SQL, y posibilitan la entrada de expresiones de más potencia.

PROTEGERSE DE INYECCIÓN SQL La inyección SQL es fácil de evitar en la mayoría de los lenguajes de programación que desarrollan aplicaciones web

PROTEGERSE DE INYECCIÓN SQL EN PHP Para MySQL, la función a usar es mysql_real_escape_string: Ejemplo: $query_result = mysql_query("select * FROM usuarios WHERE nombre = \"". mysql_real_escape_string($nombre_usuario). "\"");

PROTEGERSE DE INYECCIÓN SQL EN JAVA En Java, tenemos que usar la clase PreparedStatement En vez de: Connection con = (acquire Connection) Statement stmt = con.createstatement(); ResultSet rset = stmt.executequery("select * FROM usuarios WHERE nombre = '" + nombreusuario + "';"); Habría que poner: Connection con = (acquire Connection) PreparedStatement pstmt = con.preparestatement("select * FROM usuarios WHERE nombre =?"); pstmt.setstring(1, nombreusuario); ResultSet rset = pstmt.executequery();

PROTEGERSE DE INYECCIÓN SQL EN C# El siguiente ejemplo muestra cómo prevenir los ataques de inyección de código usando el objeto SqlCommand

PROTEGERSE DE INYECCIÓN SQL En vez de: using( SqlConnection con = (acquire connection) ) { con. Open(); using( SqlCommand cmd = new SqlCommand("SELECT * FROM usuarios WHERE nombre = '" + nombreusuario + "'", con) ) { using( SqlDataReader rdr = cmd.executereader() ){... } } } Habría que usar: using( SqlConnection con = (acquire connection) ) { con. Open(); using( SqlCommand cmd = new SqlCommand("SELECT * FROM usuarios WHERE nombre = @nombreusuario", con) ) { cmd.parameters.addwithvalue("@nombreusuario", nombreusuario); using( SqlDataReader rdr = cmd.executereader() ){... } } }

PREGUNTAS