password off nope new funciona form disable desactivar chrome autocompletar html browser autocomplete

html - off - disable autocomplete chrome



¿Cómo se desactiva el autocompletado del navegador en el campo de formulario web/etiqueta de entrada? (30)

Agregar autocomplete="off" no lo va a cortar.

Cambiar el atributo de tipo de entrada a type="search" .
Google no aplica el relleno automático a las entradas con un tipo de búsqueda.

¿Cómo se desactiva el autocomplete en los principales navegadores para una input específica (o form field )?


Así que aquí está:

function turnOnPasswordStyle() { $(''#inputpassword'').attr(''type'', "password"); }

<input oninput="turnOnPasswordStyle()" id="inputpassword" type="text">


Este es un problema de seguridad que los navegadores ignoran ahora. Los navegadores identifican y almacenan el contenido utilizando nombres de entrada, incluso si los desarrolladores consideran que la información es confidencial y no deberían almacenarse. Hacer un nombre de entrada diferente entre 2 solicitudes resolverá el problema (pero aún se guardará en la memoria caché del navegador y también aumentará la memoria caché del navegador). Pedirle al usuario que active o desactive las opciones en la configuración de su navegador no es una buena solución. El problema se puede solucionar en el backend.

Aquí está mi solución. Un enfoque que he implementado en mi framework. Todos los elementos de autocompletado se generan con una entrada oculta como esta:

<? $r = rmd5(rand().mocrotime(TRUE)); ?> <form method="POST" action="./"> <input type="text" name="<? echo $r; ?>" /> <input type="hidden" name="__autocomplete_fix_<? echo $r; ?>" value="username" /> <input type="submit" name="submit" value="submit" /> </form>

El servidor luego procesa las variables post como esta:

foreach ($_POST as $key => $val) { if(preg_match(''#^__autocomplete_fix_#'', $key) === 1){ $n = substr($key, 19); if(isset($_POST[$n]))$_POST[$val] = $_POST[$n]; } }

Se puede acceder al valor como de costumbre.

var_dump($_POST[''username'']);

Y el navegador no podrá sugerir información de la solicitud anterior o de usuarios anteriores.

Todo funciona a la perfección, incluso si las actualizaciones de los navegadores desean ignorar el autocompletado o no. Esa ha sido la mejor manera de solucionar el problema para mí.


Ninguno de los trucos mencionados aquí me funcionó en Chrome. Aquí hay una discusión del problema: https://code.google.com/p/chromium/issues/detail?id=468153#c41

Añadiendo esto dentro de una <form> obra (al menos por ahora):

<div style="display: none;"> <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" /> </div>


No puedo creer que esto siga siendo un problema mucho después de que se haya informado. Las soluciones anteriores no funcionaron para mí, ya que el safari parecía saber cuándo el elemento no se mostraba o estaba fuera de la pantalla, sin embargo, lo siguiente funcionó para mí:

<div style="height:0px; overflow:hidden; "> Username <input type="text" name="fake_safari_username" > Password <input type="password" name="fake_safari_password"> </div>

Espero que sea útil para alguien!


prueba estos también si simplemente autocomplete="off" no funciona:

autocorrect="off" autocapitalize="off" autocomplete="off"


A veces, incluso autocompletar = desactivado no impide rellenar las credenciales en los campos incorrectos, pero no el campo de usuario o apodo.

Esta solución es además de la publicación de apinstein sobre el comportamiento del navegador.

corrija la función de autocompletar del navegador en solo lectura y establezca la capacidad de escritura en el foco (clic y pestaña)

<input type="password" readonly onfocus="this.removeAttribute(''readonly'');"/>

Actualización: Mobile Safari coloca el cursor en el campo, pero no muestra el teclado virtual. New Fix funciona como antes pero maneja el teclado virtual:

<input id="email" readonly type="email" onfocus="if (this.hasAttribute(''readonly'')) { this.removeAttribute(''readonly''); // fix for mobile safari to show virtual keyboard this.blur(); this.focus(); }" />

Demostración en vivo https://jsfiddle.net/danielsuess/n0scguv6/

// UpdateEnd

¿Porque el navegador rellena automáticamente las credenciales en el campo de texto incorrecto?

Noté este extraño comportamiento en Chrome y Safari, cuando hay campos de contraseña en la misma forma. Supongo que el navegador busca un campo de contraseña para insertar sus credenciales guardadas. Luego rellena automáticamente (solo adivinando debido a la observación) el campo de entrada de texto más cercano, que aparece antes del campo de contraseña en DOM. Como el navegador es la última instancia y no puedes controlarlo,

Esta solución de solo lectura anterior funcionó para mí.


Añadiendo el

autocomplete="off"

La etiqueta de formulario deshabilitará el autocompletado del navegador (lo que se escribió anteriormente en ese campo) de todos input campos de input dentro de ese formulario en particular.

Probado en:

  • Firefox 3.5, 4 BETA
  • Internet Explorer 8
  • Cromo

Además de autocomplete=off , también puede hacer que los nombres de los campos de su formulario sean aleatorizados por el código que genera la página, tal vez agregando alguna cadena específica de la sesión al final de los nombres.

Cuando se envía el formulario, puede quitar esa parte antes de procesarla en el lado del servidor. Esto evitaría que el navegador web encuentre un contexto para su campo y también podría ayudar a prevenir ataques XSRF porque un atacante no podría adivinar los nombres de campo para un envío de formulario.


Como han dicho otros, la respuesta es autocomplete="off"

Sin embargo, creo que vale la pena explicar por qué es una buena idea usar esto en ciertos casos, ya que algunas respuestas a esto y preguntas duplicate han sugerido que es mejor no apagarlo.

La detención de los navegadores que almacenan números de tarjetas de crédito no debe dejarse a los usuarios. Demasiados usuarios ni siquiera se darán cuenta de que es un problema.

Es particularmente importante desactivarlo en los campos para códigos de seguridad de tarjetas de crédito. Como esta página dice:

"Nunca almacene el código de seguridad ... su valor depende de la presunción de que la única forma de suministrarlo es leerlo en la tarjeta de crédito física, lo que demuestra que la persona que lo suministra posee la tarjeta".

El problema es que, si se trata de una computadora pública (cibercafé, biblioteca, etc.) es fácil para otros usuarios robar los datos de su tarjeta, e incluso en su propia máquina, un sitio web malicioso podría robar datos de autocompletado .


Con el fin de evitar el XHTML no válido, puede establecer este atributo utilizando javascript. Ejemplo usando jQuery:

<input type="text" class="noAutoComplete" ... /> $(function() { $(''.noAutoComplete'').attr(''autocomplete'', ''off''); });

El problema es que los usuarios sin javascript obtendrán la funcionalidad de autocompletar.


Creo que autocomplete=off es compatible con HTML 5.

No obstante, pregúntese por qué quiere hacer esto; puede tener sentido en algunas situaciones, pero no lo haga solo por hacerlo.

Es menos conveniente para los usuarios y ni siquiera es un problema de seguridad en OS X (mencionado por Soren a continuación). Si le preocupa que a las personas se les roben las contraseñas de forma remota, un registrador de pulsaciones de teclas aún podría hacerlo aunque su aplicación use autcomplete=off .

Como usuario que elige tener un navegador para recordar (la mayoría de) mi información, me resultaría molesto si su sitio no recordara el mío.


En una nota relacionada o en realidad, en la nota completamente opuesta -

"Si usted es el usuario del formulario mencionado anteriormente y desea volver a habilitar la funcionalidad de autocompletar, use el marcador de" recordar contraseña "de esta página de bookmarklets . Quita todos los atributos autocomplete="off" de todos los formularios de la página. Mantener luchando la buena pelea! "


Esto funciona para mi

<input name="pass" type="password" autocomplete="new-password" />

También podemos usar esta estrategia en otros controles como texto, selección, etc.


Firefox 30 ignora autocomplete="off" para las contraseñas, optando por preguntar al usuario si la contraseña debe almacenarse en el cliente. Tenga en cuenta el siguiente commentary del 5 de mayo de 2014:

  • El administrador de contraseñas siempre pregunta si desea guardar una contraseña. Las contraseñas no se guardan sin el permiso del usuario.
  • Somos el tercer navegador en implementar este cambio, después de IE y Chrome.

De acuerdo con la documentación de la Red de Desarrolladores de Mozilla , el atributo de elemento de formulario booleano autocomplete evita que los datos de formulario se almacenen en caché en navegadores más antiguos.

<input type="text" name="foo" autocomplete="off" />


He estado intentando soluciones sin fin, y luego encontré esto:

En lugar de autocomplete="off" simplemente use autocomplete="false"

¡Tan simple como eso, y también funciona como un encanto en Google Chrome!


He resuelto la interminable lucha con Google Chrome con el uso de caracteres aleatorios. Cuando siempre se procesa automáticamente con una cadena aleatoria, nunca recordará nada.

<input name="name" type="text" autocomplete="rutjfkde">

Espero que ayude a otras personas.


La mayoría de los principales navegadores y administradores de contraseñas (correctamente, IMHO) ahora ignoran autocomplete=off .

¿Por qué? Muchos bancos y otros sitios web de "alta seguridad" agregaron autocomplete=off a sus páginas de inicio de sesión "por motivos de seguridad", pero esto en realidad disminuye la seguridad, ya que hace que las personas que cambian las contraseñas en estos sitios de alta seguridad sean fáciles de recordar (y, por lo tanto, de crack). ) ya que el autocompletado se rompió.

Hace mucho tiempo, la mayoría de los administradores de contraseñas comenzaron a ignorar autocomplete=off , y ahora los navegadores comienzan a hacer lo mismo solo para las entradas de nombre de usuario / contraseña.

Desafortunadamente, los errores en las implementaciones de autocompletado insertan información de nombre de usuario y / o contraseña en campos de formulario inapropiados, causando errores de validación de formularios, o peor aún, insertando nombres de usuario en campos que el usuario dejó intencionalmente en blanco.

¿Qué debe hacer un desarrollador web?

  • Si puede mantener todos los campos de contraseña en una página por sí mismos, eso es un gran comienzo, ya que parece que la presencia de un campo de contraseña es el principal desencadenante para que el usuario / pase el autocompletado inicie. De lo contrario, lea los consejos a continuación.
  • Safari advierte que hay 2 campos de contraseña y desactiva el autocompletado en este caso, asumiendo que debe ser un formulario de cambio de contraseña, no un formulario de inicio de sesión. Tan solo asegúrese de usar 2 campos de contraseña (nuevo y confirmar nuevo) para cualquier formulario donde permita
  • Chrome 34, desafortunadamente, intentará autocompletar campos con usuario / pasar cada vez que vea un campo de contraseña. Este es un error bastante grave que, con suerte, cambiará el comportamiento de Safari. Sin embargo, agregar esto en la parte superior de su formulario parece deshabilitar el llenado automático de la contraseña:

    <input type="text" style="display:none"> <input type="password" style="display:none">

Todavía no he investigado a fondo IE o Firefox pero me complacerá actualizar la respuesta si otros tienen información en los comentarios.


La mejor solucion:

Impedir autocompletar nombre de usuario (o correo electrónico) y contraseña:

<input type="email" name="email"><!-- Can be type="text" --> <input type="password" name="password" autocomplete="new-password">

Prevenir autocompletar un campo:

<input type="text" name="field" autocomplete="nope">

Explicación: autocomplete continúa trabajando en <input> , autocomplete="off" no funciona, pero puede cambiar a una cadena aleatoria, como no.

Trabaja en:

  • Cromo: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 y 64.

  • Firefox: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 y 58


La solución para Chrome es agregar autocomplete="new-password" a la contraseña de tipo de entrada.

Ejemplo:

<form name="myForm"" method="post"> <input name="user" type="text" /> <input name="pass" type="password" autocomplete="new-password" /> <input type="submit"> </form>

Chrome siempre autocompleta los datos si encuentra un cuadro de tipo de contraseña , lo suficiente como para indicar para ese cuadro autocomplete = "new-password" .

Esto funciona bien para mi.

Nota: asegúrese de que con los cambios en F12 surtan efecto, muchas veces los navegadores guardan la página en caché, esto me dio una mala impresión de que no funcionó, pero el navegador no trajo los cambios.


Ninguna de las soluciones me funcionó en esta conversación.

Finalmente, descubrí una solución HTML pura que no requiere Javascript , funciona en los navegadores modernos (excepto IE; tenía al menos 1 captura, ¿no?), Y no requiere que desactives la función de autocompletar para todo el formulario.

Simplemente desactive la función autocompletar en el form y luego enciéndalo para cualquier input que desee que funcione dentro del formulario. Por ejemplo:

<form autocomplete="off"> <!-- these inputs will not allow autocomplete and chrome won''t highlight them yellow! --> <input name="username" /> <input name="password" type="password" /> <!-- this field will allow autocomplete to work even though we''ve disabled it on the form --> <input name="another_field" autocomplete="on" /> </form>


Realmente usamos la idea de sasb para un sitio. Era una aplicación web de software médico para dirigir un consultorio médico. Sin embargo, muchos de nuestros clientes eran cirujanos que usaban muchas estaciones de trabajo diferentes, incluidas las terminales semipúblicas. Por lo tanto, querían asegurarse de que un médico que no comprende las implicaciones de las contraseñas guardadas automáticamente o que no está prestando atención no pueda dejar su información de inicio de sesión accidentalmente accesible. Por supuesto, esto fue antes de la idea de la navegación privada que comienza a aparecer en IE8, FF3.1, etc. Aun así, muchos médicos se ven obligados a usar navegadores de escuelas antiguas en hospitales con TI que no cambiarán.

Entonces, la página de inicio de sesión generó nombres de campos aleatorios que solo funcionarían para esa publicación. Sí, es menos conveniente, pero solo está afectando al usuario por no almacenar información de inicio de sesión en terminales públicos.


Simplemente configura autocomplete="off" . Hay una muy buena razón para hacer esto: ¡Desea proporcionar su propia funcionalidad de autocompletar!


Tendría que discrepar con las respuestas que dicen para evitar deshabilitar la función de autocompletar.

Lo primero que debe mencionarse es que el autocompletar que no se deshabilita explícitamente en los campos del formulario de inicio de sesión es un fallo de PCI-DSS. Además, si la máquina local de un usuario se ve comprometida, cualquier información autocompletada puede ser obtenida de forma trivial por un atacante debido a que está almacenada de forma segura.

Ciertamente hay un argumento para la facilidad de uso, sin embargo, hay un balance muy fino cuando se trata de qué campos de formulario deben tener el autocompletado deshabilitado y cuál no.


Tratar de agregar

readonly onfocus = "this.removeAttribute (''readonly'');"

además de

autocompletar = "apagado"

a la (s) entrada (s) que no desea recordar los datos del formulario ( username , password , etc.) como se muestra a continuación:

<input type="text" name="UserName" autocomplete="off" readonly onfocus="this.removeAttribute(''readonly'');" > <input type="password" name="Password" autocomplete="off" readonly onfocus="this.removeAttribute(''readonly'');" >


Actualización: el siguiente ejemplo completo se basa en este enfoque que evita arrastrar y soltar , copiar , pegar , etc.

<input type="text" name="UserName" style="text-transform:lowercase;" placeholder="Username" autocomplete="off" readonly onfocus="this.removeAttribute(''readonly'');" oncopy="return false" ondrag="return false" ondrop="return false" onpaste="return false" oncontextmenu="return false" > <input type="password" name="Password" placeholder="Password" autocomplete="off" readonly onfocus="this.removeAttribute(''readonly'');" oncopy="return false" ondrag="return false" ondrop="return false" onpaste="return false" oncontextmenu="return false" >

Probado en las últimas versiones de los principales navegadores, es decir, Google Chrome , Mozilla Firefox , Microsoft Edge , etc. y funciona sin problemas. Espero que esto ayude...


Tres opciones: Primero:

<input type=''text'' autocomplete=''off'' />

Segundo:

<form action='''' autocomplete=''off''>

Tercero (código javascript):

$(''input'').attr(''autocomplete'', ''off'');


Un poco tarde para el juego ... pero me encontré con este problema e intenté varias fallas, pero esta me funciona en MDN

En algunos casos, el navegador seguirá sugiriendo valores de autocompletado, incluso si el atributo autocompletar está desactivado. Este comportamiento inesperado puede ser bastante desconcertante para los desarrolladores. El truco para forzar realmente la no finalización es asignar una cadena aleatoria al atributo de esta manera:

autocomplete="nope"


Utilice un nombre y una ID no estándar para los campos, así que en lugar de "nombre" tiene "nombre_". Los navegadores entonces no lo verán como el campo de nombre. La mejor parte de esto es que puede hacer esto en algunos campos, pero no en todos, y autocompletará algunos campos, pero no todos.


Era una forma no estándar de hacer esto (creo que Mozilla e Internet Explorer aún lo admiten), pero meterse con las expectativas de los usuarios es una mala idea.

Si el usuario ingresa los detalles de su tarjeta de crédito en un formulario y luego deja que otra persona use ese navegador, no es su problema. :)


<form name="form1" id="form1" method="post" autocomplete="off" action="http://www.example.com/form.cgi">

Esto funcionará en Internet Explorer y Mozilla FireFox, el inconveniente es que no es el estándar XHTML.