Pregunta

Una de las alegrías de trabajar para un gobierno agencia de cuidados médicos, es tener que lidiar con todas las de la paranoia en torno a lidiar con PHI (Información Protegida de Salud).No me malinterpreten, yo soy todo para hacer todo lo posible para proteger la información personal de las personas (salud, financieros, hábitos de navegación, etc.), pero a veces la gente se pone un poco nervioso.

Caso en cuestión:Una de nuestras clientes recientemente encontró que el navegador proporciona la característica útil para guardar su contraseña.Todos sabemos que ha estado allí por un tiempo y es completamente opcional y es hasta el usuario final para decidir si es o no es una decisión inteligente para utilizar o no.Sin embargo, hay un poco de alboroto en el momento y estamos siendo exigible a encontrar una manera de desactivar esa funcionalidad de nuestro sitio.

Pregunta:Hay una manera para que un sitio para decirle al navegador, no a la oferta de recordar contraseñas?He estado en el desarrollo web de un largo tiempo, pero no saben que me he encontrado con que antes.

Cualquier ayuda es muy apreciada.

¿Fue útil?

Solución

No estoy seguro de si va a funcionar en todos los navegadores, pero usted debe tratar de establecer autocomplete="off" en el formulario.

<form id="loginForm" action="login.cgi" method="post" autocomplete="off">

La manera más fácil y sencilla para deshabilitar el Formulario y la Contraseña de almacenamiento de mensajes y evitar que los datos del formulario se almacena en caché en la historia de las sesiones es el uso de la función de autocompletar formulario de elemento de atributo con el valor "off".

De http://developer.mozilla.org/En/How_to_Turn_Off_Form_Autocompletion

Algunos de menor importancia de la investigación muestra que esto funciona en IE, pero lo voy a dejar sin garantías ;)

@José:Si es un requisito estricto para pasar de validación XHTML con la etiqueta real (no sé por qué sería, sin embargo) que, en teoría, podría añadir este atributo con javascript después, pero, a continuación, los usuarios con js desactivado (probablemente un neglectable cantidad de su base de usuarios o cero si su sitio requiere js) todavía tendrá sus contraseñas guardadas.

Ejemplo con jQuery:

$('#loginForm').attr('autocomplete', 'off');

Otros consejos

Yo había estado luchando con este problema de un tiempo, con un toque único para el problema.Los usuarios con privilegios no podía tener las contraseñas guardadas de trabajo para ellos, pero para los usuarios normales que necesitaba.Esto significaba que los usuarios con privilegios tuvieron que iniciar sesión en dos veces, la segunda vez no cumplimiento de las contraseñas guardadas.

Con este requisito, la norma autocomplete="off" método no funciona en todos los navegadores, ya que la contraseña se han guardado desde el primer inicio de sesión.Un colega encontrado una solución para reemplazar el campo de la contraseña cuando se centra en un campo nueva contraseña y, a continuación, centrarse en el campo nueva contraseña (a continuación, conectar el mismo controlador de eventos).Este trabajado (excepto la causada en un bucle infinito en IE6).Tal vez era una forma de evitar eso, pero es que me estaba causando una crisis de migraña.

Por último, he intentado tener sólo el nombre de usuario y la contraseña fuera de la forma.Para mi sorpresa, esto funcionó!Se trabajó en IE6, y las versiones actuales de Firefox y Chrome en Linux.Yo no lo he probado, pero me imagino que funciona en la mayoría, si no todos los navegadores (pero no me sorprendería si había un navegador por ahí que no importaba si no había ninguna forma).

Aquí está el código de ejemplo, junto con un poco de jQuery para que funcione:

<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>

<form id="theForm" action="/your/login" method="post">
  <input type="hidden" id="hiddenUsername" name="username"/>
  <input type="hidden" id="hiddenPassword" name="password"/>
  <input type="submit" value="Login"/>
</form>

<script type="text/javascript" language="JavaScript">
  $("#theForm").submit(function() {
    $("#hiddenUsername").val($("#username").val());
    $("#hiddenPassword").val($("#password").val());
  });
  $("#username,#password").keypress(function(e) {
    if (e.which == 13) {
      $("#theForm").submit();
    }
  });
</script>

Sólo uso

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

además de la

autocomplete="off"

a la entrada(s) que usted no quiere 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');" >

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

Bueno, un muy viejo el post, pero aún así voy a dar mi solución, que mi equipo había estado tratando de lograr por mucho tiempo.Hemos agregado un nuevo input type="password" campo dentro de la forma y la envolvió en div y de hecho el div oculto.Aseguró que este div es antes de la entrada de contraseña real.Esto funcionó para nosotros y no dio ninguna opción Guardar Contraseña

Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview

HTML:

<form method="post" action="yoururl">
      <div class="hidden">
        <input type="password"/>
      </div>
      <input type="text" name="username" placeholder="username"/>
      <input type="password" name="password" placeholder="password"/>
    </form>

CSS:

.hidden {display:none;}

Usted puede evitar que el navegador de la concordancia de las formas por la aleatoriedad en el nombre que se utiliza para el campo de contraseña en cada show.A continuación, el navegador se ve una contraseña para el mismo la url, pero no se puede estar seguro de que es el misma contraseña.Tal vez es el control de algo más.

Actualización: tenga en cuenta que esto debe ser además de la el uso de autocompletar o de otras tácticas, no un sustituto de los mismos, por las razones indicadas por los demás.

También tenga en cuenta que esto sólo va a impedir que el navegador de auto-completar la contraseña.No va a impedir que se el almacenamiento de la contraseña en cualquier nivel de arbitraria la seguridad en el explorador elige utilizar.

El uso real la autenticación de dos factores para evitar la exclusiva dependencia de contraseñas que puede ser almacenado en muchos más lugares de los que el usuario de la memoria caché del navegador.

La forma más limpia es el uso de autocomplete="off" el atributo de etiqueta, pero Firefox no lo hace correctamente obedecer al cambiar los campos de la Ficha.

La única forma de parar esto es para agregar un falso oculto campo de contraseña que trucos el navegador para rellenar la contraseña.

<input type="text" id="username" name="username"/>
<input type="password" id="prevent_autofill" autocomplete="off" style="display:none" tabindex="-1" />
<input type="password" id="password" autocomplete="off" name="password"/>

Es una fea hack, porque cambiar el comportamiento del navegador, lo cual debe ser considerado una mala práctica.Utilizar sólo si realmente lo necesita.

Nota:de esta forma, dejar de contraseña de autocompletar, porque FF va a "salvar" el valor de #prevent_autofill (que está vacía) y tratará de rellenar todas las contraseñas guardadas allí, como siempre se utiliza la primera type="password" de entrada se encuentra en DOM después de la respectiva "nombre de usuario" de entrada.

He comprobado que la adición de autocomplete="off" en la etiqueta del formulario en todos los principales navegadores.De hecho, la Mayoría de los pueblos en NOSOTROS usando IE8 hasta ahora.

  1. IE8, IE9, IE10, Firefox, Safari funciona bien.

    Navegador no pedir "guardar contraseña".También, previamente guardado nombre de usuario y contraseña no se llena.

  2. Chrome & IE 11 no apoyar el autocomplete="off" característica
  3. FF apoyo a la autocomplete="off".pero a veces la existente guardado las credenciales están pobladas.

Actualizado el 11 de junio de 2014

Finalmente, debajo de la cruz es un navegador solución con el uso de javascript y se está trabajando muy bien en todos los navegadores.

Necesidad de eliminar la "forma" de la etiqueta en el formulario de inicio de sesión.Después de la validación del lado del cliente, puesto que las credenciales en oculto de formulario y envíelo.

También, agregar dos métodos.uno para la validación "validateLogin()" y otro para escuchar evento enter mientras haga clic en entrar en el cuadro de texto/contraseña/botón de "checkAndSubmit()".porque ahora el formulario de inicio de sesión no tiene una etiqueta de formulario, de modo que introduzca evento no funciona aquí.

HTML

<form id="HiddenLoginForm" action="" method="post">
<input type="hidden" name="username" id="hidden_username" />
<input type="hidden" name="password" id="hidden_password" />
</form>

Username: <input type="text" name="username" id="username" onKeyPress="return checkAndSubmit(event);" /> 
Password: <input type="text" name="password" id="password" onKeyPress="return checkAndSubmit(event);" /> 
<input type="button" value="submit" onClick="return validateAndLogin();" onKeyPress="return checkAndSubmit(event);" /> 

Javascript

//For validation- you can modify as you like
function validateAndLogin(){
  var username = document.getElementById("username");
  var password = document.getElementById("password");

  if(username  && username.value == ''){
    alert("Please enter username!");
    return false;
  }

  if(password && password.value == ''){
    alert("Please enter password!");
    return false;
  }

  document.getElementById("hidden_username").value = username.value;
  document.getElementById("hidden_password").value = password.value;
  document.getElementById("HiddenLoginForm").submit();
}

//For enter event
function checkAndSubmit(e) {
 if (e.keyCode == 13) {
   validateAndLogin();
 }
}

Buena suerte!!!

No realmente - la única cosa que podría hacer de manera realista es ofrecer asesoramiento en el sitio;tal vez, antes de su firma por primera vez en, usted podría mostrar un formulario con información que indica que no es recomendable que permiten que el navegador guarde la contraseña.

A continuación, el usuario será inmediatamente siga los consejos, anote la contraseña en un post-it y la cinta a su monitor.

Lo que he estado haciendo es una combinación de autocomplete="off" y limpieza de campos de contraseña mediante un javascript / jQuery.

Ejemplo jQuery:

$(function() { 
    $('#PasswordEdit').attr("autocomplete", "off");
    setTimeout('$("#PasswordEdit").val("");', 50); 
});

Mediante el uso de setTimeout() usted puede esperar para el navegador para completar el campo antes de borrarlo, de lo contrario el navegador siempre autocompletar después de borrar el campo.

si autocomplete="off" no está funcionando...quitar la etiqueta form y el uso de una etiqueta div lugar, a continuación, pasar a la forma de valores de uso de jquery para el servidor.Esto funcionó para mí.

Porque autocomplete="off" no funciona para los campos de contraseña, se debe confiar en javascript.He aquí una solución sencilla basada en las respuestas que se encuentran aquí.

Agregar el atributo data-contraseña-autocomplete="off" en su campo de la contraseña:

<input type="password" data-password-autocomplete="off">

Se incluyen los siguientes JS:

$(function(){
    $('[data-password-autocomplete="off"]').each(function() {
        $(this).prop('type', 'text');
        $('<input type="password"/>').hide().insertBefore(this);
        $(this).focus(function() {
            $(this).prop('type', 'password');
        });
    });     
});

Esta solución funciona para Chrome y FF.

Sólo así la gente se de cuenta - el 'autocompletar' atributo funciona la mayoría del tiempo, pero los usuarios avanzados pueden conseguir alrededor de él mediante un bookmarklet.

Contar con un navegador guardar tus contraseñas en realidad aumenta la protección contra keyloggers, por lo que, probablemente, la opción más segura es la de guardar las contraseñas en el navegador, pero de protegerlos con una contraseña maestra (al menos en Firefox).

Tengo un trabajo de alrededor, lo que puede ayudar.

Usted podría hacer una fuente personalizada hack.Así, una fuente personalizada, con todos los personajes como un punto / círculo / estrella, por ejemplo.Use esto como una fuente personalizada para su sitio web.Comprobar cómo hacer esto en inkscape: cómo hacer su propia fuente

Luego de su registro en el uso de la forma:

<form autocomplete='off'  ...>
   <input type="text" name="email" ...>
   <input type="text" name="password" class="password" autocomplete='off' ...>
   <input type=submit>
</form>

A continuación, agregue el código css:

@font-face {
    font-family: 'myCustomfont';
    src: url('myCustomfont.eot');
    src: url('myCustomfont?#iefix') format('embedded-opentype'),
         url('myCustomfont.woff') format('woff'),
         url('myCustomfont.ttf') format('truetype'),
         url('myCustomfont.svg#myCustomfont') format('svg');
    font-weight: normal;
    font-style: normal;

}
.password {
  font-family:'myCustomfont';
}

Bastante compatible con todos los navegadores.He tratado de IE6+, FF, Safari y Chrome.Sólo asegúrese de que el oet fuente que convertir no corromperse.Espero que ayude?

Markus planteó un gran punto.Me decidí a buscar el autocomplete atributo y obtuvo los siguientes:

La única desventaja de utilizar este atributo es que no es estándar (funciona en IE y Mozilla), y validación de XHTML error.Creo que este es un caso donde es razonable para romper la validación sin embargo. (fuente)

Por lo tanto, habría que decir que a pesar de que no funcionan en un 100% a través de la junta se maneja en los principales navegadores, así que es una gran solución.

La forma más sencilla de resolver este problema es colocar campos de ENTRADA fuera de la etiqueta de FORMULARIO y agregue dos campos ocultos dentro de la etiqueta FORM.A continuación, en un evento de envío oyente antes de que los datos del formulario se envía al servidor de copia de los valores de visible de entrada a los invisibles.

He aquí un ejemplo (que no se puede ejecutar aquí, ya que la forma de acción no está establecido en un verdadero script de inicio de sesión):

<!doctype html>
<html>
<head>
  <title>Login & Save password test</title>
  <meta charset="utf-8">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>

  <body>
      <!-- the following fields will show on page, but are not part of the form -->
      <input class="username" type="text" placeholder="Username" />
      <input class="password" type="password" placeholder="Password" />

      <form id="loginForm" action="login.aspx" method="post">
        <!-- thw following two fields are part of the form, but are not visible -->
        <input name="username" id="username" type="hidden" />
        <input name="password" id="password" type="hidden" />
        <!-- standard submit button -->
        <button type="submit">Login</button>
      </form>

    <script>
      // attache a event listener which will get called just before the form data is sent to server
      $('form').submit(function(ev) {
        console.log('xxx');
        // read the value from the visible INPUT and save it to invisible one
        // ... so that it gets sent to the server
        $('#username').val($('.username').val());
        $('#password').val($('.password').val());
      });
    </script>

  </body>
</html>

Mi js (jquery) solución es cambiar la contraseña de entrada tipo de texto en el formulario de envío.La contraseña puede ser visible por un segundo, así que también se oculta la entrada justo antes de que. Prefiero no usar esto para formularios de inicio de sesión, pero es útil (junto con autocomplete="off"), por ejemplo, en parte de administración del sitio web.

Prueba a poner esto en consola (con jquery), antes de enviar el formulario.

$('form').submit(function(event) {
    $(this).find('input[type=password]').css('visibility', 'hidden').attr('type', 'text');
});

Probado en Chrome 44.0.2403.157 (64-bit).

Traté de más arriba autocomplete="off" y sin embargo, nada de éxito.si usted está usando angular js mi recomendación es ir con botón y el ng-click.

<button type="button" class="" ng-click="vm.login()" />

Este ya tiene un aceptados respuesta im agregar este si alguien cant resolver el problema con el aceptado la respuesta puede ir con mi mecanismo.

Gracias por la pregunta y las respuestas.

He probado un montón de soluciones.Dinámica contraseña nombre de campo, varios campos de contraseña (invisible para los falsos), cambiar el tipo de entrada de "texto" a "contraseña", autocomplete="off", la función autocompletar="nueva contraseña",...pero nada resuelto con navegador reciente.

Para deshacerse de contraseña recordar, finalmente me tratan de la contraseña como campo de entrada, y "desenfoque" de que el texto escrito.

Es menos "seguro" de que un nativo campo de contraseña desde la selección de la clase de texto mostrará como texto en claro, pero la contraseña no es recordado.También depende de tener activado Javascript.

Usted tendrá estimar el riesgo de utilizar a continuación la propuesta vs contraseña recordar opción de navegador.

Mientras que la contraseña recordar que puede ser manejado (disbaled por sitio) por el usuario, está bien para un ordenador personal, no para un "público" o computadora compartida.

En mi caso es para un ERP que se ejecutan en equipos compartidos, así que voy a darle una oportunidad a mi de la solución a continuación.

<input style="background-color: rgb(239, 179, 196); color: black; text-shadow: none;" name="password" size="10" maxlength="30" onfocus="this.value='';this.style.color='black'; this.style.textShadow='none';" onkeypress="this.style.color='transparent'; this.style.textShadow='1px 1px 6px green';" autocomplete="off" type="text">

Una forma que yo conozco es el uso de (por ejemplo) de JavaScript para copiar el valor de la contraseña de campo antes de enviar el formulario.

El principal problema con esto es que la solución está ligada a JavaScript.

Entonces de nuevo, si puede ser atado a JavaScript que bien podría hash de la contraseña en el cliente antes de enviar una solicitud al servidor.

El verdadero problema es mucho más profundo que la adición de atributos HTML - esto es común preocupación por la seguridad, por eso la gente inventó las teclas de hardware y otras cosas locas para la seguridad.

Imagina que tienes autocomplete="off" que funcionan a la perfección en todos los navegadores.Tendría que ayudar con la seguridad?Por supuesto, no.Los usuarios tendrán que escribir sus contraseñas en los libros de texto, en adhesivos pegados a su monitor, donde cada una de las oficinas visitante puede ver, guardar archivos de texto en el escritorio y así sucesivamente.

En general, la aplicación web y desarrollador web no se hace responsable de ninguna manera por el usuario final seguridad.Los usuarios finales pueden protegerse a sí mismos solamente.Idealmente, DEBEN de guardar todas las contraseñas en su cabeza y el uso de la funcionalidad de restablecimiento de contraseña (o en contacto con el administrador en caso de que la olvide.De lo contrario, siempre habrá un riesgo de que la contraseña puede ser visto y robado de alguna manera.

Así que ya sea que usted tiene algunos locos de la política de seguridad con las teclas de hardware (por ejemplo, algunos bancos ofrecen por Internet banca que básicamente se emplea la autenticación de dos factores) o NINGUNA SEGURIDAD, básicamente.Bueno, este es un poco más exagerado, por supuesto.Es importante entender lo que están tratando de proteger contra:

  1. Los accesos no autorizados.Más simple formulario de inicio de sesión es suficiente, básicamente.A veces las medidas adicionales adoptadas como al azar preguntas de seguridad, CAPTCHAs, contraseña endurecimiento etc.
  2. Credencial de esnifar.HTTPS es UNA necesidad si la gente acceder a la aplicación web del servicio público de Wi-Fi, etc.Mencionar que aun teniendo HTTPS, que necesitan sus usuarios a cambiar sus contraseñas con regularidad.
  3. Insider ataque.Hay dos muchos ejemplos de tales, a partir de simple robo de sus contraseñas del navegador, o a los que se han escrito en algún lugar sobre el escritorio (no requiere de habilidades) y terminando con la sesión de forja y de interceptar el tráfico de red local (incluso encriptada) y el acceso a la aplicación web tal como era en el otro extremo del usuario.

En este post, puedo ver inadecuada requisitos del puesto de desarrollador de que nunca será capaz de resolver debido a la naturaleza del problema de seguridad al usuario final.Mi subjetivo punto es que el desarrollador debe, básicamente, decir que NO y punto requisito problema en lugar de perder el tiempo en esas tareas, honestamente.Esto no absolutamente hacer el sistema más seguro, más bien va a llevar a los casos con pegatinas en los monitores.Por desgracia, algunos jefes de escuchar sólo lo que quieren oír.Sin embargo, si yo fuera tú me gustaría tratar de explicar que el problema real está viniendo, y que autocomplete="off" no se resolvería a menos que obligará a los usuarios a mantener sus contraseñas exclusivamente en su cabeza!El desarrollador en su final no puede proteger completamente de usuarios, los usuarios necesitan saber cómo utilizar el sistema y, al mismo tiempo, no exponga su sensible/de segura de la información y esto va mucho más allá de la autenticación.

Frente a la misma HIPAA problema y encontrar una manera relativamente fácil solución,

  1. Crear una contraseña oculta campo con el nombre de campo como una matriz.

    <input type="password" name="password[]" style="display:none" />
    
  2. El uso de la misma matriz para el campo de la contraseña.

    <input type="password" name="password[]" />
    

El navegador (Chrome) puede pedirle a "Guardar contraseña", pero independientemente de si el usuario selecciona guardar, la próxima vez que inicie sesión en la contraseña se auto-rellenar la contraseña oculta campo, la ranura cero en la matriz, dejando a la 1 de la ranura en blanco.

Traté de definir la matriz, tales como "password[parte2]" pero todavía es recordado.Creo que lo lanza fuera de si es un no indexada matriz porque no tiene más remedio que soltarlo en el primer lugar.

A continuación se utiliza el lenguaje de programación que prefiera para acceder a la matriz, PHP, por ejemplo,

echo $_POST['password'][1];

Dado que la mayoría de la autocomplete sugerencias, incluyendo la aceptación de la respuesta, no funcionan hoy en día los navegadores web (es decir,web de administradores de contraseñas del navegador ignorar autocomplete), una novela más de la solución es de intercambio entre password y text tipos y hacer que el fondo de color coincide con el color del texto cuando el campo es un simple campo de texto, que sigue ocultar la contraseña mientras de un verdadero campo de contraseña cuando el usuario (o un programa como KeePass) es la introducción de una contraseña.Los navegadores no le pida para guardar las contraseñas que se almacenan en campos de texto.

La ventaja de este enfoque es que permite una mejora progresiva y por lo tanto no requiere Javascript para un campo a la función como un campo de contraseña (también se puede iniciar con un simple campo de texto en lugar y aplicar el mismo enfoque pero eso no es realmente HIPAA PHI/PII-compatible).Tampoco este enfoque depende de formas ocultas o los campos que no necesariamente podrían ser enviados al servidor (porque están ocultos) y algunos de esos trucos no funcionan bien en varios navegadores modernos.

plugin de jQuery:

https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js

Pertinentes del código fuente desde el enlace de arriba:

(function($) {
$.fn.StopPasswordManager = function() {
    return this.each(function() {
        var $this = $(this);

        $this.addClass('no-print');
        $this.attr('data-background-color', $this.css('background-color'));
        $this.css('background-color', $this.css('color'));
        $this.attr('type', 'text');
        $this.attr('autocomplete', 'off');

        $this.focus(function() {
            $this.attr('type', 'password');
            $this.css('background-color', $this.attr('data-background-color'));
        });

        $this.blur(function() {
            $this.css('background-color', $this.css('color'));
            $this.attr('type', 'text');
            $this[0].selectionStart = $this[0].selectionEnd;
        });

        $this.on('keydown', function(e) {
            if (e.keyCode == 13)
            {
                $this.css('background-color', $this.css('color'));
                $this.attr('type', 'text');
                $this[0].selectionStart = $this[0].selectionEnd;
            }
        });
    });
}
}(jQuery));

Demo:

https://barebonescms.com/demos/admin_pack/admin.php

Haga clic en "Añadir Entrada" en el menú y, a continuación, desplácese a la parte inferior de la página para "Módulo:Deje La Contraseña De Administrador".

Descargo de responsabilidad:Mientras que este enfoque funciona para los individuos videntes, puede haber problemas con el software lector de pantalla.Por ejemplo, un lector de pantalla puede leer la contraseña del usuario en voz alta, ya que considera que un simple campo de texto.También puede haber otras consecuencias imprevistas de usando el plugin.La alteración de navegador web incorporado la funcionalidad se debe hacer con moderación con las pruebas de una amplia variedad de condiciones y casos de borde.

Hay una manera para que un sitio para decirle al navegador, no a la oferta de recordar contraseñas?

El sitio web indica al navegador que se trata de una contraseña mediante el uso de <input type="password">.Así que si usted debe hacerlo desde un sitio web perspectiva, entonces tendría que cambiar eso.(Obviamente no recomiendo este).

La mejor solución sería que el usuario configure su navegador para que no recuerde las contraseñas.

Si usted no quiere confiar la función de autocompletar de la bandera, usted puede asegurarse de que el usuario escribe en el cuadro con el evento onchange.El siguiente código es un simple formulario HTML.El formulario oculto elemento password_edited comienza establece en 0.Cuando el valor de la contraseña se cambia, el código JavaScript en la parte superior (pw_edited función) cambia el valor a 1.Cuando se pulsa el botón, se comprueba el valueenter código de aquí antes de enviar el formulario.De esa manera, incluso si el navegador te ignora y autocompleta el campo, el usuario no puede pasar por la página de inicio de sesión sin escribir en el campo de la contraseña.También, asegúrese de en blanco el campo de contraseña cuando el foco se establece.De lo contrario, usted puede añadir un carácter al final, y luego ir hacia atrás y quitar lo de engañar al sistema.Recomiendo añadir el autocomplete="off" para la contraseña en adición, pero este ejemplo muestra cómo el código de seguridad de las obras.

<html>
  <head>
    <script>
      function pw_edited() {
        document.this_form.password_edited.value = 1;
      }
      function pw_blank() {
        document.this_form.password.value = "";
      }
      function submitf() {
        if(document.this_form.password_edited.value < 1) {
          alert("Please Enter Your Password!");
        }
        else {
         document.this_form.submit();
        }
      }
    </script>
  </head>
  <body>
    <form name="this_form" method="post" action="../../cgi-bin/yourscript.cgi?login">
      <div style="padding-left:25px;">
        <p>
          <label>User:</label>
          <input name="user_name" type="text" class="input" value="" size="30" maxlength="60">
        </p>
        <p>
          <label>Password:</label>
          <input name="password" type="password" class="input" size="20" value="" maxlength="50" onfocus="pw_blank();" onchange="pw_edited();">
        </p>
        <p>
          <span id="error_msg"></span>
        </p>
        <p>
          <input type="hidden" name="password_edited" value="0">
          <input name="submitform" type="button" class="button" value="Login" onclick="return submitf();">
        </p>
      </div>
    </form>
  </body>
</html>

autocomplete="off" no funciona para deshabilitar el administrador de contraseñas de Firefox 31 y no más probable es que en algunas versiones anteriores, también.

Checkout de la discusión en mozilla acerca de este tema:https://bugzilla.mozilla.org/show_bug.cgi?id=956906

Hemos querido utilizar un segundo campo de la contraseña introduzca una contraseña de una sola vez generado por un token.Ahora estamos utilizando una entrada de texto en lugar de una contraseña de entrada.:-(

Me dieron una tarea similar para deshabilitar el auto-llenado de nombre de inicio de sesión y contraseñas en el navegador, después de mucho ensayo y error he encontrado la siguiente solución óptima.Añadir la de por debajo de los controles antes de su original de los controles.

<input type="text" style="display:none">
<input type="text" name="OriginalLoginTextBox">

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

Esto funciona bien para IE11 y Chrome 44.0.2403.107

autocomplete="off" funciona para la mayoría de los navegadores modernos, pero otro método que he usado trabajado con éxito con la Epifanía (una WebKit-powered navegador de GNOME) es almacenar generado al azar prefijo en el estado de la sesión (o un campo oculto, me pasó a tener un adecuado variable en el estado de sesión ya), y usar esto para cambiar el nombre de los campos.Epifanía quiere guardar la contraseña, pero al volver a la forma de no rellenar los campos.

No he tenido ningún problema con este método:

Utilizar autocomplete="off", añadir una contraseña oculta de campo y, a continuación, otro no-oculto.El navegador intenta auto completar el oculto si no respeto de autocomplete="off"

Otra solución es hacer el POST con un formulario oculto donde todas las entradas son de tipo oculto.La forma visible se utiliza una entrada del tipo "password".La última forma nunca será presentado y por lo que el navegador no puede interceptar en toda la operación de inicio de sesión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top