¿Es realmente necesario hashear las contraseñas de los usuarios cuando ya protejo mi base de datos contra la inyección de SQL? [duplicar]

-2

Estoy desarrollando una escuela, solo apliqué todas las protecciones de inyección SQL que existen y la seguridad de la base de datos, los roles administrativos, las consultas parametrizadas, y desinfecto las entradas del cliente.

Pero FOOL ME! Nunca hash las contraseñas de usuario, simplemente las almaceno. Pero no creo que ningún hacker llegue a la base de datos.

¿Debo hash las contraseñas o no?

Gracias :)

    
pregunta NathanWay 22.03.2015 - 21:12
fuente

3 respuestas

6

Sí, deberías.

Nadie hash (las contraseñas son hash, no están cifradas) porque saben que tienen una vulnerabilidad de inyección de SQL. Es una segunda capa de defensa.

Y se necesita porque no puede estar seguro de que no tiene una inyección SQL. O que una biblioteca que usas no tiene ninguna. O que no hay otras vulnerabilidades, como XSS (si tiene una opción de exportación de base de datos), LFI (si se puede acceder a su base de datos desde una ubicación remota), ejecución de código, script de copia de seguridad mal escrito, etc. a través del cual un atacante puede acceder a base de datos.

No estoy muy seguro de lo que significa "desarrollar una escuela", pero si tiene usuarios reales y se produce un ataque, será una mala publicidad si sus contraseñas no están dañadas, e incluso podría haber alguna responsabilidad. de tu parte.

Esas son las razones para el hashing. ¿Contra quiénes están? Quiero decir, es bastante fácil, así que hazlo.

    
respondido por el tim 22.03.2015 - 21:43
fuente
4

SI !! Absolutamente DEBES tanto hash como saltear las contraseñas. ¿Cómo sabes que "ningún hacker llegará a la base de datos"? Probablemente hay cientos de formas en que una base de datos podría verse comprometida; La inyección SQL es solo una de ellas. E incluso si tanto su servidor como su aplicación web tienen cero vulnerabilidades de seguridad (poco probable), todavía tiene que lidiar con posibilidades como el compromiso físico del servidor y los administradores perezosos / descuidados / deshonestos que tienen acceso a la base de datos.

Hashing y salado son muy fáciles de realizar, por lo que simplemente no hay excusa para almacenar contraseñas en texto plano. Sin embargo, debe asegurarse de elegir los algoritmos seguros de hashing y salazón. ¡No MD5 o SHA1!

También para aclarar la terminología, el hash no es lo mismo que cifrar. El cifrado es un proceso reversible, mientras que el hash no lo es. Cuando almacena contraseñas en una base de datos, la mayoría de las veces debe hacer hash, no cifrar.

    
respondido por el tlng05 22.03.2015 - 21:44
fuente
0

Sí, debe hashear las contraseñas de los usuarios, ya que usted tiene acceso a la base de datos. Nunca debes tener acceso a las contraseñas de los usuarios. Debido a que tiene acceso, cualquier persona que obtenga su nivel de privilegio también tendrá acceso. También lo hace alguien que logra obtener acceso directo a la base de datos al comprometer el servidor. Al igual que cualquiera que pueda ver sus copias de seguridad. La contraseña de un usuario nunca debe ser conocida por nadie, excepto ese usuario; Si bien su servidor tiene que aprenderlo temporalmente, no debe almacenarlo más de lo absolutamente necesario, para minimizar el riesgo de que alguien lo obtenga.

    
respondido por el cpast 22.03.2015 - 22:31
fuente

Lea otras preguntas en las etiquetas