/
Sensitive Data Exposure

Sensitive Data Exposure

El uso de información en aplicaciones web y API deben proteger adecuadamente los datos confidenciales, como los financieros, de salud y de información personal. Los atacantes pueden robar o modificar esos datos poco protegidos para cometer fraudes con tarjetas de crédito, robos de identidad u otros delitos. Los datos sensibles pueden verse comprometidos sin protección adicional, como el cifrado en reposo o en tránsito, y requieren precauciones especiales cuando se intercambian con el navegador.

Riesgo de la vulnerabilidad

  • Robo de información sensible: Números de tarjetas de crédito, cuentas bancarias, datos personales de identidad, sanitarios, direcciones, etc.

  • Robo de usuarios para acceder a sistemas o Productos: Nombres de usuario, contraseñas.

  • Pérdidas financieras.

  • Suplantación de identidades.

  • Disminución de confianza en la organización.

 

Código vulnerable 1:

[...]  public void save(User user) {         logger.debug("Saving user with login: " + user.getLogin() + " id: " + user.getId());           if(user.getPassword() != null)             user.setPassword(hashEncodePassword(user.getPassword()));           if(user.getId() != null) {             entityManager.merge(user);         }         else {             entityManager.persist(user);         }     } [...]

Solución:

Se recomienda siempre garantizar que la información sensible se maneja de manera adecuada, tal y como fija las normas de la del marco de Seguridad y la normativa vigente.

En este caso, no se guardan las contraseñas en la base de datos, sino su resumen criptográfico (hash) junto con un Salt para añadir mayor aleatoriedad.

[...]  public void save(User user) {         logger.debug("Saving user with login: " + user.getLogin() + " id: " + user.getId());           if(user.getPassword() != null)             user.setPassword(hashEncodePassword(user.getPassword() + user.getSalt()));           if(user.getId() != null) {             entityManager.merge(user);         }         else {             entityManager.persist(user);         }     } [...]

Referencias:

SQL Injection Prevention - OWASP Cheat Sheet Series

What is SQL Injection? Tutorial & Examples | Web Security Academy

Related content