Una de las alegrías de trabajar para una agencia de salud del gobierno es tener que lidiar con toda la paranoia en torno a la PHI (Información de salud protegida). No me malinterpreten, estoy dispuesto a hacer todo lo posible para proteger la información personal de las personas (salud, finanzas, hábitos de navegación, etc.), pero a veces las personas se ponen demasiado nerviosas.
Caso en cuestión: uno de nuestros clientes estatales descubrió recientemente que el navegador proporciona la práctica función para guardar su contraseña. Todos sabemos que ha estado allí durante un tiempo y es completamente opcional y depende del usuario final decidir si es una decisión inteligente de usar o no. Sin embargo, hay un poco de alboroto en este momento y se nos exige encontrar una manera de desactivar esa funcionalidad para nuestro sitio.
Pregunta : ¿Hay alguna forma de que un sitio le diga al navegador que no ofrezca recordar contraseñas? He estado en el desarrollo web durante mucho tiempo, pero no sé si me he encontrado con eso antes.
Cualquier ayuda es apreciada.
fuente
Respuestas:
No estoy seguro de si funcionará en todos los navegadores, pero debería intentar configurar autocomplete = "off" en el formulario.
Algunas investigaciones menores muestran que esto funciona en IE pero no dejaré garantías;)
@Joseph : Si es un requisito estricto pasar la validación XHTML con el marcado real (no sé por qué sería), teóricamente podría agregar este atributo con JavaScript después, pero luego los usuarios con js deshabilitado (probablemente una cantidad descuidada de su base de usuarios o cero si su sitio requiere js) aún tendrá sus contraseñas guardadas.
Ejemplo con jQuery:
fuente
autocomplete="off"
para losinput type="password"
campos. msdn.microsoft.com/en-us/library/ie/ms533486%28v=vs.85%29.aspxpara las entradas que no quiere que recuerden los datos del formulario (
username
,password
, etc.) como se muestra a continuación:Probado en las últimas versiones de los principales navegadores, es decir
Google Chrome
,Mozilla Firefox
,Microsoft Edge
, etc, y funciona como un encanto. Espero que esto ayude.fuente
Había estado luchando con este problema por un tiempo, con un giro único al problema. Los usuarios privilegiados no podían tener las contraseñas guardadas para ellos, pero los usuarios normales lo necesitaban. Esto significaba que los usuarios privilegiados tenían que iniciar sesión dos veces, la segunda vez sin forzar contraseñas guardadas.
Con este requisito, el
autocomplete="off"
método estándar no funciona en todos los navegadores, porque la contraseña puede haberse guardado desde el primer inicio de sesión. Un colega encontró una solución para reemplazar el campo de contraseña cuando estaba enfocado con un nuevo campo de contraseña, y luego enfocarse en el nuevo campo de contraseña (luego conecte el mismo controlador de eventos). Esto funcionó (excepto que causó un bucle infinito en IE6). Tal vez había una forma de evitar eso, pero me estaba causando una migraña.Finalmente, traté de tener el nombre de usuario y la contraseña fuera del formulario. Para mi sorpresa, esto funcionó! Funcionó en IE6 y las versiones actuales de Firefox y Chrome en Linux. No lo he probado más, pero sospecho que funciona en la mayoría de los navegadores, si no en todos (pero no me sorprendería si hubiera un navegador que no le importara si no hubiera forma).
Aquí hay un código de muestra, junto con algo de jQuery para que funcione:
fuente
Bueno, es una publicación muy antigua, pero aún así daré mi solución, que mi equipo había estado tratando de lograr durante mucho tiempo. Acabamos de agregar un nuevo campo input type = "password" dentro del formulario y lo envolvimos en div y lo ocultamos. Asegúrese de que este div esté antes de la entrada de contraseña real. Esto funcionó para nosotros y no dio ninguna opción de Guardar contraseña
Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview
HTML:
CSS:
fuente
Puede evitar que el navegador coincida con los formularios aleatorizando el nombre utilizado para el campo de contraseña en cada programa. Luego, el navegador ve una contraseña para la misma URL, pero no puede estar seguro de que sea la misma contraseña . Tal vez está controlando algo más.
Actualización: tenga en cuenta que esto debe ser además del uso de autocompletar u otras tácticas, no un reemplazo para ellos, por las razones indicadas por otros.
También tenga en cuenta que esto solo evitará que el navegador complete automáticamente la contraseña. No evitará que almacene la contraseña en cualquier nivel de seguridad arbitraria que el navegador elija usar.
fuente
Utilice la autenticación real de dos factores para evitar la dependencia exclusiva de las contraseñas que podrían almacenarse en muchos más lugares que la memoria caché del navegador del usuario.
fuente
La forma más limpia es usar el
autocomplete="off"
atributo de etiqueta, pero Firefox no lo obedece correctamente cuando cambia los campos con Tab.La única forma de detener esto es agregar un campo de contraseña oculta falsa que engaña al navegador para completar la contraseña allí.
Es un truco feo, porque cambias el comportamiento del navegador, lo que debería considerarse una mala práctica. Úselo solo si realmente lo necesita.
Nota: esto detendrá efectivamente el autocompletado de contraseña, porque FF "guardará" el valor de
#prevent_autofill
(que está vacío) e intentará completar las contraseñas guardadas allí, ya que siempre usa la primeratype="password"
entrada que encuentra en DOM después del "nombre de usuario" respectivo entrada.fuente
He probado que agregar autocompletar = "off" en la etiqueta de formulario en todos los principales navegadores. De hecho, la mayoría de las personas en los Estados Unidos usan IE8 hasta ahora.
Actualizado el 11 de junio de 2014
Finalmente, a continuación se muestra una solución de navegador cruzado que utiliza JavaScript y funciona bien en todos los navegadores.
Necesita eliminar la etiqueta "formulario" en el formulario de inicio de sesión. Después de la validación del lado del cliente, coloque esas credenciales en forma oculta y envíela.
Además, agregue dos métodos. uno para la validación "validateLogin ()" y otro para escuchar el evento enter mientras hace clic en el cuadro de texto / contraseña / botón "checkAndSubmit ()". porque ahora el formulario de inicio de sesión no tiene una etiqueta de formulario, ingrese el evento que no funciona aquí.
HTML
Javascript
¡¡¡Buena suerte!!!
fuente
En realidad no, lo único que puede hacer de manera realista es ofrecer consejos sobre el sitio; tal vez, antes de iniciar sesión por primera vez, podría mostrarles un formulario con información que indique que no se recomienda que permitan que el navegador almacene la contraseña.
Luego, el usuario seguirá inmediatamente el consejo, anotará la contraseña en una nota adhesiva y la pegará en su monitor.
fuente
Lo que he estado haciendo es una combinación de autocompletar = "off" y borrar los campos de contraseña usando javascript / jQuery.
Ejemplo de jQuery:
Al usarlo
setTimeout()
, puede esperar a que el navegador complete el campo antes de borrarlo; de lo contrario, el navegador siempre se completará automáticamente una vez que haya borrado el campo.fuente
si autocomplete = "off" no funciona ... elimine la etiqueta del formulario y use una etiqueta div en su lugar, luego pase los valores del formulario usando jquery al servidor. Esto funcionó para mí.
fuente
Como autocomplete = "off" no funciona para los campos de contraseña, uno debe confiar en javascript. Aquí hay una solución simple basada en las respuestas que se encuentran aquí.
Agregue el atributo data-password-autocomplete = "off" a su campo de contraseña:
Incluya el siguiente JS:
Esta solución funciona tanto para Chrome como para FF.
fuente
Para que la gente se dé cuenta: el atributo 'autocompletar' funciona la mayor parte del tiempo, pero los usuarios avanzados pueden evitarlo utilizando un marcador.
Tener un navegador que guarde sus contraseñas en realidad aumenta la protección contra el registro de teclas, por lo que posiblemente la opción más segura es guardar las contraseñas en el navegador pero protegerlas con una contraseña maestra (al menos en Firefox).
fuente
Tengo una solución, que puede ayudar.
Podrías hacer un hack de fuente personalizado. Entonces, haga una fuente personalizada, con todos los caracteres como un punto / círculo / estrella, por ejemplo. Use esto como una fuente personalizada para su sitio web. Comprueba cómo hacer esto en inkscape: cómo hacer tu propia fuente
Luego, en su formulario de inicio de sesión use:
Luego agrega tu css:
Bastante compatible con navegadores cruzados. He intentado IE6 +, FF, Safari y Chrome. Solo asegúrese de que la fuente oet que convierta no se corrompa. ¿Espero eso ayude?
fuente
La forma más sencilla de resolver este problema es colocar los campos de ENTRADA fuera de la etiqueta FORM y agregar dos campos ocultos dentro de la etiqueta FORM. Luego, en un detector de eventos de envío antes de que los datos del formulario se envíen al servidor, copie los valores de la entrada visible a los invisibles.
Aquí hay un ejemplo (no puede ejecutarlo aquí, ya que la acción del formulario no está establecida en un script de inicio de sesión real):
fuente
Mi solución alternativa js (jquery) es cambiar el tipo de entrada de contraseña a texto en el envío del formulario . La contraseña podría ser visible por un segundo, así que también oculto la entrada justo antes de eso. Prefiero no usar esto para los formularios de inicio de sesión , pero es útil (junto con autocompletar = "off"), por ejemplo, dentro de la parte de administración del sitio web.
Intente poner esto dentro de una consola (con jquery), antes de enviar el formulario.
Probado en Chrome 44.0.2403.157 (64 bits).
fuente
Probé muchas soluciones. Nombre de campo de contraseña dinámica, campos de contraseña múltiples (invisibles para los falsos), cambiando el tipo de entrada de "texto" a "contraseña", autocompletar = "off", autocomplete = "nueva contraseña", ... pero nada lo resolvió con reciente navegador.
Para deshacerse de la contraseña, recuerde que finalmente traté la contraseña como campo de entrada y "borré" el texto escrito.
Es menos "seguro" que un campo de contraseña nativo ya que al seleccionar el texto escrito se mostrará como texto claro, pero la contraseña no se recuerda. También depende de tener Javascript activado.
Tendrás que estimar el riesgo de utilizar la opción propuesta debajo de recordar contraseña del navegador.
Si bien el usuario puede administrar (deshabilitar por sitio) el recuerdo de contraseña, está bien para una computadora personal, no para una computadora "pública" o compartida.
Mi caso es para un ERP que se ejecuta en computadoras compartidas, así que probaré mi solución a continuación.
fuente
Markus planteó un gran punto. Decidí buscar el
autocomplete
atributo y obtuve lo siguiente:Debo decir que, aunque no funciona al 100% en todos los ámbitos, se maneja en los principales navegadores, por lo que es una gran solución.
fuente
Lo intenté arriba
autocomplete="off"
y, sin embargo, todo fue exitoso si está usando angular js, mi recomendación es ir con el botón y el clic ng.Esto ya tiene una respuesta aceptada, estoy agregando esto si alguien no puede resolver el problema con la respuesta aceptada, puede ir con mi mecanismo.
Gracias por la pregunta y las respuestas.
fuente
enter
oreturn
para enviar un formulario.Una forma que sé es usar (por ejemplo) JavaScript para copiar el valor del campo de contraseña antes de enviar el formulario.
El principal problema con esto es que la solución está vinculada a JavaScript.
Por otra parte, si se puede vincular a JavaScript, también podría cifrar la contraseña en el lado del cliente antes de enviar una solicitud al servidor.
fuente
El verdadero problema es mucho más profundo que simplemente agregar atributos a su HTML: esta es una preocupación de seguridad común, es por eso que la gente inventó las llaves de hardware y otras locuras para la seguridad.
Imagine que tiene autocompletar = "off" funcionando perfectamente en todos los navegadores. ¿Eso ayudaría con la seguridad? Claro que no. Los usuarios escribirán sus contraseñas en los libros de texto, en calcomanías adheridas a su monitor donde cada visitante de la oficina pueda verlas, guardarlas en archivos de texto en el escritorio, etc.
En general, la aplicación web y el desarrollador web no son responsables de ninguna manera por la seguridad del usuario final. Los usuarios finales solo pueden protegerse. Idealmente, DEBEN mantener todas las contraseñas en su cabeza y usar la funcionalidad de restablecimiento de contraseña (o contactar al administrador) en caso de que la hayan olvidado. De lo contrario, siempre habrá un riesgo de que la contraseña se pueda ver y robar de alguna manera.
Entonces, o tiene una política de seguridad loca con claves de hardware (como, algunos bancos ofrecen para la banca por Internet que básicamente emplea autenticación de dos factores) o básicamente SIN SEGURIDAD. Bueno, esto es un poco exagerado, por supuesto. Es importante entender contra qué está tratando de protegerse:
En esta publicación en particular, puedo ver requisitos inadecuados para el desarrollador que nunca podrá resolver debido a la naturaleza del problema: la seguridad del usuario final. Mi punto subjetivo es que el desarrollador básicamente debería decir NO y señalar el problema de requisitos en lugar de perder el tiempo en tales tareas, honestamente. Esto no hace que su sistema sea más seguro, sino que llevará a los casos con pegatinas en los monitores. Desafortunadamente, algunos jefes solo escuchan lo que quieren escuchar. Sin embargo, si fuera usted, trataría de explicar de dónde viene el problema real, y que autocompletar = "off" no lo resolvería a menos que obligue a los usuarios a mantener todas sus contraseñas exclusivamente en su cabeza. El desarrollador por su parte no puede proteger a los usuarios por completo,
fuente
Enfrentando el mismo problema de HIPAA y encontré una solución relativamente fácil,
Cree un campo de contraseña oculto con el nombre del campo como una matriz.
Use la misma matriz para el campo de contraseña real.
El navegador (Chrome) puede solicitarle "Guardar contraseña", pero independientemente de si el usuario selecciona guardar, la próxima vez que inicie sesión, la contraseña rellenará automáticamente el campo de contraseña oculta, el espacio cero en la matriz, dejando el primer espacio en blanco.
Intenté definir la matriz, como "contraseña [parte2]", pero aún así lo recordaba. Creo que lo descarta si es una matriz no indexada porque no tiene más remedio que soltarlo en el primer lugar.
Luego, utiliza el lenguaje de programación de su elección para acceder a la matriz, PHP, por ejemplo,
fuente
Dado que la mayoría de las
autocomplete
sugerencias, incluyendo la respuesta aceptada, no hacer el trabajo en los navegadores web de hoy (encargados de la contraseña es decir, del navegador ignoranautocomplete
), una solución más novedosa es intercambiar entrepassword
ytext
tipos y hacer que el color de fondo que coincida con el color del texto cuando el campo es un campo de texto sin formato, que continúa ocultando la contraseña mientras es un campo de contraseña real cuando el usuario (o un programa como KeePass) ingresa una contraseña. Los navegadores no solicitan guardar contraseñas almacenadas en campos de texto sin formato.La ventaja de este enfoque es que permite una mejora progresiva y, por lo tanto, no requiere Javascript para que un campo funcione como un campo de contraseña normal (también puede comenzar con un campo de texto sin formato y aplicar el mismo enfoque, pero eso no es realmente HIPAA Compatible con PHI / PII). Este enfoque tampoco depende de formas / campos ocultos que no necesariamente se envían al servidor (porque están ocultos) y algunos de esos trucos tampoco funcionan en varios navegadores modernos.
Complemento jQuery:
https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js
Código fuente relevante del enlace anterior:
Manifestación:
https://barebonescms.com/demos/admin_pack/admin.php
Haga clic en "Agregar entrada" en el menú y luego desplácese hasta la parte inferior de la página para "Módulo: Detener el Administrador de contraseñas".
Descargo de responsabilidad: si bien este enfoque funciona para personas videntes, puede haber problemas con el software del lector de pantalla. Por ejemplo, un lector de pantalla puede leer la contraseña del usuario en voz alta porque ve un campo de texto sin formato. También puede haber otras consecuencias imprevistas de usar el complemento anterior. La alteración de la funcionalidad incorporada del navegador web debe hacerse con moderación con la prueba de una amplia variedad de condiciones y casos extremos.
fuente
El sitio web le dice al navegador que es una contraseña mediante el uso
<input type="password">
. Entonces, si debe hacer esto desde la perspectiva de un sitio web, entonces tendría que cambiar eso. (Obviamente no recomiendo esto).La mejor solución sería que el usuario configure su navegador para que no recuerde las contraseñas.
fuente
Si no desea confiar en el indicador de autocompletar, puede asegurarse de que el usuario escriba en el cuadro utilizando el evento onchange. El siguiente código es un formulario HTML simple. El elemento de formulario oculto password_edited comienza establecido en 0. Cuando se cambia el valor de la contraseña, el JavaScript en la parte superior (función pw_edited) cambia el valor a 1. Cuando se presiona el botón, comprueba el código del valor aquí antes de enviar el formulario . De esa manera, incluso si el navegador lo ignora y completa automáticamente el campo, el usuario no puede pasar la página de inicio de sesión sin escribir el campo de contraseña. Además, asegúrese de dejar en blanco el campo de contraseña cuando se establece el foco. De lo contrario, puede agregar un personaje al final, luego regresar y eliminarlo para engañar al sistema. Recomiendo agregar el autocomplete = "off" a la contraseña además, pero este ejemplo muestra cómo funciona el código de respaldo.
fuente
autocomplete = "off" no funciona para deshabilitar el administrador de contraseñas en Firefox 31 y probablemente tampoco en algunas versiones anteriores.
Vea la discusión en mozilla sobre este tema: https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Queríamos usar un segundo campo de contraseña para ingresar una contraseña de un solo uso generada por un token. Ahora estamos usando una entrada de texto en lugar de una entrada de contraseña. :-(
fuente
Me dieron una tarea similar para deshabilitar el llenado automático del nombre de usuario y las contraseñas por navegador, después de muchas pruebas y errores, encontré que la solución a continuación es óptima. Simplemente agregue los siguientes controles antes de sus controles originales.
Esto funciona bien para IE11 y Chrome 44.0.2403.107
fuente
autocomplete = "off" funciona para la mayoría de los navegadores modernos, pero otro método que utilicé que funcionó con éxito con Epiphany (un navegador WebKit para GNOME) es almacenar un prefijo generado aleatoriamente en estado de sesión (o un campo oculto, resultó que tenía una variable adecuada en estado de sesión ya), y úsela para alterar el nombre de los campos. Epiphany todavía quiere guardar la contraseña, pero al volver al formulario no completará los campos.
fuente
No he tenido ningún problema al usar este método:
Use autocomplete = "off", agregue un campo de contraseña oculto y luego otro no oculto. El navegador intenta completar automáticamente el oculto si no respeta autocompletar = "off"
fuente
Otra solución es hacer la POST usando una forma oculta donde todas las entradas son de tipo oculto. El formulario visible utilizará la entrada de tipo "contraseña". El último formulario nunca se enviará, por lo que el navegador no puede interceptar en absoluto la operación de inicio de sesión.
fuente