Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Charla java

1,626 views

Published on

  • Be the first to comment

  • Be the first to like this

Charla java

  1. 1. Seguridad enaplicaciones Java S
  2. 2. Índice S Injection. S Cross-SiteScripting (XSS). S Gestión de la sesión. S Autenticación y autorización.26/5/12 2 Navaja Negra - CRASH - Fco. Honrubia
  3. 3. Injection S Un ataque de este tipo como SQL, OS y LDAP injection se produce cuando datos sin verificar llegan a un interprete como parte de un comando o consulta. Estos datos pueden hace que el interprete ejecute comandos y/o acceda a datos para los que no debería tener autorización.26/5/12 3 Navaja Negra - CRASH - Fco. Honrubia
  4. 4. Injection S SQL injection. S String query = "SELECT account_balance FROM user_data WHERE user_name = " + request.getParameter("customerName"); S try { S Statement statement = connection.createStatement( … ); ResultSet results = statement.executeQuery( query ); S }26/5/12 4 Navaja Negra - CRASH - Fco. Honrubia
  5. 5. Injection S Soluciones: S Utilizar PreparedStatements (Consultas parametrizadas). S String query = "SELECT account_balance FROM user_data WHERE user_name = ? "; S PreparedStatement pstmt = connection.prepareStatement( query ); S pstmt.setString( 1, custname); S Utilizar Procedimientos almacenados. S Escapar todas las entradas de usuario. S Adicionales: S Disminuir al mínimo los privilegios de las consultas. S Validación mediante lista blanca de las entradas.26/5/12 5 Navaja Negra - CRASH - Fco. Honrubia
  6. 6. Injection S ORM’s S Hibernate S MyBatis S El propio driverjdbc escapa los parámetros. S OJO: S Query unsafeHQLQuery = session.createQuery("from Inventory where productID="+userSuppliedParameter+""); S Query safeHQLQuery = session.createQuery(“fromoInventorywhereproductID = :param”); S safeHQLQuery.setString(“param”,”valor”) ;26/5/12 6 Navaja Negra - CRASH - Fco. Honrubia
  7. 7. Índice S Injection. S Cross-SiteScripting (XSS). S Gestión de la sesión. S Autenticación y autorización.26/5/12 7 Navaja Negra - CRASH - Fco. Honrubia
  8. 8. Cross-SiteScripting (XSS) S Los ataques XSS se producen cuando una aplicación envía a un navegador web datos sin validar ni escapar. Estos ataques permiten al atacante ejecutar scripts en el navegador de la victima. S Obtener su sesión. S Redirigir a la victima a sitios maliciosos. S …26/5/12 8 Navaja Negra - CRASH - Fco. Honrubia
  9. 9. Cross-SiteScripting (XSS) S Son ataques complicados de detectar. S Normalmente son fáciles de corregir. S Salvo que en nuestra aplicación tengamos que permitir al usuario introducir código html. S OJO: no es suficiente con filtrar las entradas -> filtrar también los datos que vienen de partes “seguras”.26/5/12 9 Navaja Negra - CRASH - Fco. Honrubia
  10. 10. Cross-SiteScripting (XSS) S Ejemplo JSP vulnerable: S <textarearows="5" cols="50"> S <%= request.getAttribute(”userName")%> S </textarea>26/5/12 10 Navaja Negra - CRASH - Fco. Honrubia
  11. 11. Cross-SiteScripting (XSS) S Uso de frameworks S JSF S Struts S JSTL S … S Con cualquiera de ellos filtra automáticamente estos datos. S <s:textfieldkey="username" name="userName"/>26/5/12 11 Navaja Negra - CRASH - Fco. Honrubia
  12. 12. Cross-SiteScripting (XSS) S Si tenemos que permitir el uso de html en las entradas de usuario (Editor de texto) S Utilizar una lista blanca. S Permitir negritas: S texto_filtrado.replace("&lt;b&gt;","<b>").replace("&lt;/b&gt;","</b >"; S Filtrar todo lo demás.26/5/12 12 Navaja Negra - CRASH - Fco. Honrubia
  13. 13. Índice S Injection. S Cross-SiteScripting (XSS). S Gestión de la sesión. S Autenticación y autorización.26/5/12 13 Navaja Negra - CRASH - Fco. Honrubia
  14. 14. Gestión de la sesión S El problema relacionado con la gestión de la sesión es el robo de la misma, normalmente es muy simple con un sniffer robar el identificador de sesión del usuario.26/5/12 14 Navaja Negra - CRASH - Fco. Honrubia
  15. 15. Gestión de la sesión S Reducir el robo de sesión. S No poner sesionId en urls. S Cuando un usuario hace login regenerar la sesión. S currentSession.invalidate(); S HttpSession newSession = request.getSession(true) S Controlar el logout del usuario para invalidar la sesión. S Controlar el timeout de la sesión.26/5/12 15 Navaja Negra - CRASH - Fco. Honrubia
  16. 16. Gestión de la sesión S Frameworks (SrpringSecurity) S <session-management session-fixation- protection="migrateSession"/> S Tomcat 7 S Solución mas fiable es usar https26/5/12 16 Navaja Negra - CRASH - Fco. Honrubia
  17. 17. Índice S Injection. S Cross-SiteScripting (XSS). S Gestión de la sesión. S Autenticación y autorización.26/5/12 17 Navaja Negra - CRASH - Fco. Honrubia
  18. 18. Autenticación y autorización S Autenticación: un usuario es quién dice ser. S Autorización: el usuario tiene acceso solo a los recursos que debe tener. S Existen diversas formas de autenticación y autorización, basada en servidor o a nivel de aplicación26/5/12 18 Navaja Negra - CRASH - Fco. Honrubia
  19. 19. Autenticación y autorización S Autenticación basada en servidor S HTTP Basic Authentication (sale una ventana emergente para pedir usuario y pass) S HTTP Digest Authentication (igual pero cifrado en md5) S FormBasedAuthentication (formulario web de loginj_securtity_check) S HTTPS ClientAuthentication (soporte de certificados) S Problemas login con aplicaciones de terceros…26/5/12 19 Navaja Negra - CRASH - Fco. Honrubia
  20. 20. Autenticación y autorización S Autorización basada en servidor: S Concepto de reino “realms” en los que se encapsula cada usuario (rol).26/5/12 20 Navaja Negra - CRASH - Fco. Honrubia
  21. 21. Autenticación y autorización S A nivel de aplicación: es muy complicado conseguir una aplicación segura. S Uso de frameworks: S Spring Security S Apache Shiro26/5/12 21 Navaja Negra - CRASH - Fco. Honrubia
  22. 22. Autenticación y autorización S ¿Qué proporcionan estos frameworks? S Autenticación. S Autorización. S Sessionmanagement. S Criptografía.26/5/12 22 Navaja Negra - CRASH - Fco. Honrubia
  23. 23. Autenticación y autorización S Apache Shiro: S Fácil Configuración. S Fácil integración con entornos distribuidos. S Integración con aplicaciones de escritorio. S Soporte LDAP, Kerberos… S …26/5/12 23 Navaja Negra - CRASH - Fco. Honrubia
  24. 24. Autenticación y autorización S Spring Security: S Fácil Configuración (10 líneas XML). S No invasivo (No afecta a objetos de negocio). S Soporte OpenID (Google, IBM, Sun, Yahoo…). S Soporte LDAP, Kerberos... S Log in con redes sociales (Spring Social). S Secure Web Services S …26/5/12 24 Navaja Negra - CRASH - Fco. Honrubia
  25. 25. Referencias S http://www.owasp.org S http://static.springsource.org/spring-security/site/ S http://shiro.apache.org26/5/12 25 Navaja Negra - CRASH - Fco. Honrubia
  26. 26. Preguntas???26/5/12 26 Navaja Negra - CRASH - Fco. Honrubia

×