Charla java

1,518 views
1,435 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,518
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×