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:
https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html