SEGURIDAD EN APLICACIONES WEB CON APACHE TOMEE. Ing. Javier Mantilla Portilla



Documentos relacionados
PROGRAMACIÓN PÁGINAS WEB CON PHP

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

JAVA EE 5. Arquitectura, conceptos y ejemplos.

CentralTECH JAVA EE 7 Desarrollo

ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS

- la arquitectura TCPlIP III

Toda nuestra Experiencia a tu alcance

Programación páginas web. Servidor (PHP)

Tema 5. Plataforma Java EE

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

Programación páginas web con ASP.NET 3.5 (C#)

Tema 5. Plataforma Java EE

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

Capas de la arquitectura de referencia

IFCD04 Desarrollo de Aplicaciones Java: componentes web y aplicaciones de base de datos (JSP y JPA)

Desarrollo de Software con


Contenido Derechos Reservados DIAN - Proyecto MUISCA

Desarrollo de Aplicaciones web con JPA, EJB, JSF y PrimeFaces

Requisitos técnicos para la instalación. Arquitectura Hardware Arquitectura Software. Instrucciones de instalación GONG-R

AUDITORÍAS TÉCNICAS PARA LA CERTIFICACIÓN DE LOS SISTEMAS DE RECOGIDA DE INICIATIVAS CIUDADANAS EUROPEAS

GUÍA TÉCNICA. Desarrollo de Sistemas de Información la plataforma Business Intellingence Pentaho

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Plataforma de expediente

1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

Java 7.0 Advanced Application Developer

Haga clic para modificar el estilo de título del patrón Haga clic para modificar el estilo de texto del patrón

Rafael Doña Gil. Enginyeria Tècnica en Informàtica de Sistemes. Consultor: Jose Juan Rodríguez

PROGRAMACIÓN PÁGINAS WEB JAVASCRIPT Y PHP

Guía de migración a firma HMAC SHA256 Conexión por Redirección

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

Ataques XSS en Aplicaciones Web

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Lineamientos para el desarrollo de sistemas

Programación páginas web JavaScript y PHP

Programa de Actualización Profesional Curso: Java Avanzado JEE7 Programa del Curso

Introducción al Desarrollo de Aplicaciones Web D R A. M A R I C E L A B R A V O

ANEXO I. Diccionario de Datos

Curso de Jboss Administración

Seguridad en Sitios Web de Alto Tráfico. Ing. Enrique Hurtarte Juárez

I. DATOS DE IDENTIFICACIÓN. 1. Unidad Académica: _Facultad de Ciencias

Curso de Java EE Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1

Capitulo 5. Implementación del sistema MDM

EXTENSIÓN DE UML PARA APLICACIONES WEB

Transport Layer Security (TLS) Acerca de TLS

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Seguridad en los Dispositivos Móviles. <Nombre> <Institución> < >

TFC J2EE. Aplicación Web para la gestión de facturación de una empresa de cerrajería. Sara Gutiérrez Melero ITIG Junio de 2012

Desarrollo seguro en Drupal. Ezequiel Vázquez De la calle

Encriptación en Redes

Servicio de Notificaciones Electrónicas y Dirección Electrónica Habilitada

GUÍA TÉCNICA. Desarrollo de Proyectos en Plataforma Liferay en el Gobierno de Extremadura

Sesión 17. Servicios web RESTful

Fundamentos de programación Estudia las estructuras de control y cómo definir funciones en JavaScript.

POLÍTICAS DE SEGURIDAD PARA EL DESARROLLO DE SISTEMAS DE CAPUFE

Taller de Sistemas de Información 2

Curso de JavaServer Faces

Privacidad. <Nombre> <Institución> < >

10775 Administering Microsoft SQL Server 2012 Databases

AVA-SECSystemWeb. Introducción Características del producto Especificaciones Técnicas

Documentación Técnica Conector

Tema 1. Introducción a Java EE


Q-expeditive Publicación vía Internet

Proporciona cifrado de datos, autorización de servidores, integridad de mensajes y, opcionalmente, autorización de clientes para conexiones.

MANUAL DE USUARIO PANEL DE CONTROL Sistema para Administración del Portal Web.

Guía de doble autenticación

Introducción a la Firma Electrónica en MIDAS

PRIMEROS PASOS EN DELTA

1. Definición. Open Source. Escalable. Alto desempeño. Arquitectura Modular. Producto de licencia de código abierto sin coste adicional.

Herramienta de Gestión Integral de E-Business

FOROS. Manual de Usuario

Facultad de Ingeniería Escuela de Ciencias y Sistemas Estructura de Datos Guatemala 2013 JSF + JSP + RichFaces

PRIMEROS PASOS EN LA APLICACIÓN REA


Curso Desarrollo Java Web con JSP, Servlets y el MVC

PROGRAMA FORMATIVO Desarrollo de aplicaciones Web Java: WebServices con J2EE

PROGRAMA FORMATIVO Desarrollo de aplicaciones empresariales Java J2EE 7 (ORACLE)

SISTEMAS IDEALES SISTIDE, S.A. SISTEMA GESTION DE USUARIOS

Requerimientos de tecnología para operar con Tica. Proyecto TICA

Experiencias de Seguridad en SAP. Julio C. Ardita CYBSEC

Gestión de la Seguridad Informática

Programación páginas web JavaScript y PHP

PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO...

Sistemas Operativos. Clase 14: protección y seguridad.

Capítulo 4. Mini Tutorial

UNIVERSIDAD DE OVIEDO

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

Software Intel para administración de sistemas. Guía del usuario del Paquete de administración de servidores modulares Intel

Diseño dinámico de arquitecturas de información

Universidad Autónoma del Perú

MS_10972 Administering the Web Server (IIS) Role of Windows Server

Manual de Acceso Remoto al Portal Timbó. Montevideo 2011

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

MANUAL DE USUARIO COOPERATIVAS

Curso de Java EE Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1

MATERIAL DE TRABAJO 1. Evaluación del software

Transcripción:

SEGURIDAD EN APLICACIONES WEB CON APACHE TOMEE Ing. Javier Mantilla Portilla

Acerca de mí Quien soy? Especialista en Ingenieria de Software 10 Años experiencia en desarrollo Desarrollador JAVA, PHP Autodidacta de nuevas tecnologías Ingeniero de desarrollo UPB - Bucaramanga Sector salud y gobierno

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A4) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Apache TomEE

Apache TomEE Apache Tomcat es una aplicación de software de código abierto de las tecnologías Java Servlet y JavaServer Pages Java EE Web Profile ( Web Profile ), una descripción de la plataforma Java, Enterprise Edition dirigido específicamente a las aplicaciones web Apache TomEE se trata de un servidor de aplicaciones certificado como Java EE 6 Web Profile Compatible y basado en Tomcat Primefaces es una librería de componentes JSF para facilitar la creación de aplicaciones Web

Apache TomEE TomEE: CDI - Apache OpenWebBeans (Ej.@SessionScoped) EJB - Apache OpenEJB (Ej. @Entity, @stateless) JPA - Apache OpenJPA (Ej. javax.persistence, JPQL) JSF - Apache MyFaces JSP - Apache Tomcat JSTL - Apache Tomcat JTA - Apache Geronimo Transaction(Java Transaction API) Servlet - Apache Tomcat Javamail - Apache Geronimo JavaMail Bean Validation - Apache Bval (Ej. @NotNull(message="Image type must be specified."))

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A4) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Arquitectura Aplicación Manejo de capas cmp ARQUITECTURA APLICACIÓN JAVA EE6 Capa Presentación Capa Negocio Capa Acceso a Datos «Primefaces» Jav aserv erfaces EJB JPA DataStore «Log4j» Logger Requerimientos No funcionales de seguridad req Requerimientos no Funcionales RNF - Confiabilidad Requerimientos de Seguridad (confidencialidad)

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A4) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Verificación componentes a utilizar (A9) Identificar componentes y versión utilizada Políticas de actualización de componentes sobre vulnerabilidades corregidas Actualizaciones de seguridad.

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A4) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Inyección SQL ( A1) En Java para SQL, utilice un PreparedStatement con parámetros ligados Utilización de ORM (HIBERNATE)

Inyección SQL ( A1)

Inyección SQL ( A1)

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A4) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Autenticación y gestión de sesiones (A2) Usar siempre https para cualquier URL autenticados Si se almacenan claves en una base de datos, deben ser encriptados. Los tiempos de espera de la sesión a un tiempo tan bajo como sea posible para reducir el riesgo de exposición a alguien que se olvida de cerrar la sesión. Parámetros en el Login de tipo POST no GET (JSF son post)

Autenticación y gestión de sesiones (A2) https://code.google.com/p/owasp-esapi-java/

Autenticación y gestión de sesiones (A2)

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A7) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Uso perfiles y validación de objetos solicitados (A4,A7) Verificar las referencias directas por usuario o sesión Comprobar el acceso de los usuarios a objetos o paginas permitidas. La implementación del mecanismo debería negar todo acceso por defecto, requiriendo el establecimiento explícito de permisos a roles específicos para acceder a cada funcionalidad El proceso para gestión de accesos y permisos debería ser actualizable y auditable fácilmente

Uso perfiles y validación de objetos solicitados (A4,A7)

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A7) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Manejo de Filter y Listener (A7) Filter permite modificar el response y redirigir, en caso necesario, la petición a otro recurso distinto. Filter Ideales para el control de acceso de usuarios autentificados Filter Interceptan la invocación del servlet ANTES de que sea invocado el propio servlet

Manejo de Filter y Listener (A7)

Manejo de Filter y Listener (A7) Monitoreo de sesiones

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A7) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Encriptar datos sensibles (A6) Asegúrese de aplicar algoritmos de cifrado fuertes y estándar así como claves fuertes y gestiónelas de forma segura. Deshabilite el autocompletar en los formularios que recolectan datos sensibles Encriptar mensajes XML en cada transmisión (http://santuario.apache.org/)

Encriptar datos sensibles (A6)

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A7) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Validación de parámetros (A3) (Js, ManagedBean) Las validaciones de datos de entrada, deben realizarse siempre del lado del servidor, no sólo en el lado del cliente. Los atacantes pueden evitar la validación realizada del lado del cliente modificando valores antes de realizar verificaciones o remover por completo esta validación. Validaciones Internas. De cualquier forma, los navegadores permiten desactivar el JavaScript, razón por la cuál se hace necesaria la validación de los campos y de su formato desde el script final. Esto es importante ya que los ataques maliciosos podrían intentar enviar código por un formulario, que al ser leído o desplegado podría ejecutarse y causar serios problemas.

Validación de parámetros (A3) (Js, ManagedBean)

Contenido Apache TomEE Arquitectura de la Aplicación 1. Verificación de los componentes a utilizar (A9) 2. Inyección SQL ( A1) 3. Autenticación y gestión de sesiones (A2) 4. Uso perfiles y validación de objetos solicitados (A4,A7) 5. Manejo de Filter y Listener(A7) 6. Encriptar datos sensibles (A6) 7. Validación de parámetros (A3) (Js, ManagedBean) 8. Configuraciones de seguridad (A5)

Configuraciones de seguridad (A5) Mantener y desplegar las nuevas actualizaciones y parches de software, y también las librerías de código utilizadas (A9) Arquitectura de aplicación que proporcione una separación segura entre los componentes (Lógica de negocio. Clave BD). Auditoria a los logs de la aplicación y del sistema. Configuración de alertas Desactivar servicios no utilizados Mensajes de error excesivamente informativos Directorios con permisos indebidos

Configuraciones de seguridad (A5)

Configuraciones de seguridad (A5)

Log4J Log4j - Apache Software Foundation Permite elegir la salida y el nivel de granularidad de los mensajes o logs. En tiempo de ejecución y no a tiempo de compilación. Niveles (trace, debug, info, warn, error, fatal).

Log4J

Log4J

Log4J

Seguridad en EJB s Java EE incluye anotaciones para simplificar la implementación del control de acceso de usuarios. @DeclareRoles: Especifica los roles de seguridad asociados con el Bean. @RolesAllowed: Sólo los roles declarados en esta anotación podrán invocar el método. Se pueden especificar los roles permitidos a nivel de clase o a nivel de método. @PermitAll: Permite la invocación por todos los roles definidos. Se puede especificar a nivel de clase o a nivel de método. @DenyAll: Bloquea a todos los roles de manera que ninguno podrá llamarlo. Únicamente a nivel de método. @RunAs: Se aplica a nivel de clase e indica el rol con el que se ejecuta el Bean: @RunAs("admins")

http://tomee.apache.org/security-annotations.html Seguridad en EJB s

Referencias http://tomee.apache.org/tomcat-java-ee.html http://tomcat.apache.org/tomcat-7.0-doc/index.html https://www.owasp.org/index.php/preventing_sql_injection_in_java http://logging.apache.org/log4j/1.2/ http://es.wikipedia.org/wiki/log4j http://tomee.apache.org/security-annotations.html https://www.unidata.ucar.edu/software/thredds/current/tds/reference/t omcatsecurity.html https://www.digicert.com/es/instalar-certificado-ssl-tomcat.htm http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=securi tysslkeytool http://jaehoo.wordpress.com/2012/05/22/enable-ssl-secure-socket-layerin-apache-tomcat-5-5-6-y-7/ http://primefaces.org/

Muchas Gracias! Javier Orlando Mantilla Portilla. jmantillap@gmail.com Javier.mantillap@upb.edu.co www.javiermantilla.co