ventana usuarios usuario sesiones programar pedir formulario contraseña comprobar codigo java javascript tomcat passwords hsqldb

java - sesiones - Transmitir y proteger correctamente las contraseñas de los usuarios para una aplicación web



usuarios en java (1)

SSL se encarga de asegurar toda la capa de transporte. No necesita preocuparse por los datos que se envían a través de HTTPS.

Nunca almacene contraseñas reales en su base de datos. Solo almacene hashes salados hechos con funciones hash apropiadamente seguras (es decir, no MD5). Use una sal diferente para cada hash.

Si sigue estos principios, independientemente de los componentes que use, tendrá un mecanismo de almacenamiento de nombre de usuario / contraseña razonable.

Estoy trabajando en una aplicación web para mi proyecto de Máster. Es un sistema para que los profesores administren proyectos de estudiantes, y utiliza Java para el código del lado del servidor, HSQLDB para la base de datos y JSP para la capa de presentación, y se ejecuta en tomcat. Los datos que se almacenarán no incluyen ninguna información confidencial (identificación del estudiante, información financiera, nada de eso), pero los nombres de usuario y las contraseñas son un requisito, por lo que quiero proteger las contraseñas en caso de que el estudiante use una contraseña para mi aplicación que usan para alguna otra aplicación más importante (sin dudas, esto sucederá incluso si le digo a la gente que no lo haga).

Nunca antes había analizado este tipo de cosas y estoy bastante perdido. Encontré un buen artículo explicando cómo usar Java para crear un hash de una contraseña , y encontré información en la documentación de tomcat explicando cómo establecer el esquema de hash que se usa en los reinos y cómo hacer SSL con tomcat , así como también La biblioteca de JavaScript para crear hashes a partir de contraseñas, pero no estoy seguro de cómo juntar todas las piezas y qué piezas necesito exactamente.

Si utilizo la biblioteca JavaScript para actualizar la contraseña y usar SSL para el paso de inicio de sesión (no es necesario después de eso, creo que ya que los otros datos no necesitan protección), entonces solo almaceno las versiones hash de contraseñas en la base de datos, ¿es suficiente? ? ¿O necesito hacer algo más? Me encontré con una pregunta donde las respuestas hablaban sobre PBKDF2 y algunas otras cosas, pero me confundió más ... Si debería usar uno de los esquemas mencionados en esas respuestas, ¿cómo hago para hacerlo? No he visto referencias a ellos en Tomcat u otra documentación, así que no sé cómo los usaría ...

Si alguien puede aclarar mi confusión y decirme cuál es la forma correcta de transmitir y almacenar contraseñas de manera segura, realmente lo agradecería.