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".