Cómo eliminar o al menos cambiar la contraseña del archivo de volcado de memoria del navegador [duplicar]

1

Estoy trabajando con JSP.

Entonces, cuando un usuario envía un formulario, todos los campos del formulario dicen que el nombre de usuario y la contraseña se almacenan en un archivo de volcado de memoria del navegador en texto sin cifrar.

Incluso probé con campos ocultos JSP, pero incluso ese valor parece almacenarse en texto claro.

Pero si desecho el volcado de la página de inicio de sesión de gmail después de que se inicie sesión en Chrome, solo el nombre de usuario se almacena, no la contraseña. Aunque Firefox y IE almacenan ambos.

Algunos sitios bancarios, en realidad cambian la contraseña por completo, digamos dummy@1234... .

¿Puedo saber cómo lograr lo mismo?

¿Puedo cambiar o mejor eliminar la contraseña del volcado de memoria?

Probé con pulsaciones individuales y reemplazé los caracteres con otra cosa, pero en ese caso todavía debo enviar la contraseña real al usuario para el propósito de autenticación.

Por favor, dame algo de luz, ¿en JSP o en JavaScript?

    
pregunta StrugglingCoder 18.07.2018 - 07:31
fuente

2 respuestas

1

Su objetivo es controlar efectivamente el comportamiento del navegador y evitar que almacene la contraseña que el usuario ingresó y envió a cualquier lugar (ni caché ni almacenamiento de contraseña). Como este es un software del lado del cliente, generalmente no puedes. Pero podemos encontrar una solución que logre lo que desea en la mayoría de los casos. Tenga en cuenta que nunca tendrá control total sobre lo que el navegador almacena en la RAM, pero esto no es realmente un problema. Un atacante capaz de comprometer la RAM también es capaz de registrar las pulsaciones de teclas.

Evitar que ocurra un evento de envío

La mayoría de los navegadores lo notan cuando envía un formulario, porque hace clic en un botón especial ( type="submit" ). Esto probablemente prometerá al usuario "¿Desea almacenar la contraseña para este sitio?". Para evitar esto, puedes implementarlo por tu cuenta. No establezca type="submit" , pero cree un botón <button onclick="performLogin()" que, al hacer clic en él, capture los valores de sus campos de entrada y los envuelva en una solicitud HTTP-POST a su sitio. Si el inicio de sesión es exitoso, devuelva la clave de sesión y escríbala en una cookie o lo que sea que se ajuste a sus requisitos. Usando este enfoque, nunca desencadenará un "evento de envío" real, sino solo un evento de clic que no solicitará al usuario que guarde la contraseña.

La pregunta del caché es más complicada y me temo que no veo una solución consistente y confiable para esta, ya que un navegador no permite que un sitio web aleatorio dicte cómo organiza su RAM. Sin embargo, no puedo ver un gran inconveniente al ignorarlo. Como se mencionó anteriormente, el código malicioso capaz de leer RAM arbitraria probablemente (no siempre) puede registrar las pulsaciones de teclado, comprometiendo la contraseña, que es lo que está tratando de evitar.

P.S .: Siempre tenga cuidado al implementar medidas de seguridad o mecanismos de autenticación por su cuenta. Como goteguru dijo correctamente, "la implementación de su propia solución de seguridad puede tener dificultades". Lo aumentaría a "absolutamente tiene fallas capaces de arruinarte de varias maneras que nunca esperabas, si no se maneja adecuadamente".

    
respondido por el GxTruth 18.07.2018 - 13:35
fuente
0

Puedes crear tu propio campo de entrada en js. Captura pulsaciones de teclas y rellena un cuadro de entrada ficticio con asteriscos. Puede hacer hash de la contraseña localmente (utilizando un salt provisto por el servidor) y enviar este hash al servidor para verificarlo a través de su método preferido (campo oculto, ajax, websocket).

Incluso puedes implementar hash de transmisión, de esta manera la contraseña nunca se almacenará en la memoria como un todo.

Por supuesto, un atacante dedicado podría aplicar ingeniería inversa a tu código, pero aún así sería bastante difícil eliminar la contraseña del volcado de memoria.

Palabra de advertencia: la implementación de su propia solución de seguridad puede tener dificultades.

    
respondido por el goteguru 18.07.2018 - 12:27
fuente

Lea otras preguntas en las etiquetas