466 votes

Désactiver le navigateur ' enregistrer le mot de passe ' fonctionnalités

Une des joies de travailler pour un gouvernement, l'agence de santé est d'avoir à traiter avec l'ensemble de la paranoïa autour de traiter avec PHI (Informations de Santé Protégées). Ne vous méprenez pas, je suis tout à fait tout son possible pour protéger les renseignements personnels des personnes (santé, financiers, habitudes de navigation, etc.), mais parfois, les gens deviennent un peu trop nerveux.

Affaire au point: l'Un de nos état des clients récemment découvert que le navigateur fournit la fonctionnalité pratique pour enregistrer votre mot de passe. Nous savons tous qu'il a été là pendant un certain temps et est totalement facultatif et est à l'utilisateur de décider si oui ou non c'est une décision intelligente d'utiliser ou pas. Cependant, il est un peu un tollé à l'instant, et l'on nous demandait de trouver un moyen de désactiver les fonctionnalités de notre site.

Question: Est-il possible pour un site de dire au navigateur de ne pas retenir les mots de passe? J'ai été autour du développement web une longue période, mais ne savent pas que j'ai trouver qu'avant.

Toute aide est appréciée.

340voto

Markus Olsson Points 12651

Je ne sais pas si ça marchera dans tous les navigateurs, mais vous pouvez essayer le réglage de autocomplete="off" sur le formulaire.

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

Le plus simple et le plus simple pour désactiver la Forme et le Mot de passe de stockage des invites et d'empêcher des données de formulaire à partir de la mise en cache dans l'historique de la session est d'utiliser la saisie semi-automatique de la forme d'attribut d'élément avec la valeur "off".

À partir de http://developer.mozilla.org/En/How_to_Turn_Off_Form_Autocompletion

Quelques petites recherche montre que cela fonctionne sous IE mais je vais laisser aucune garantie ;)

@Joseph: Si c'est une stricte obligation de transmettre la validation XHTML avec la majoration réelle (je ne sais pas pourquoi il en serait tout de même), vous pourriez théoriquement ajouter cet attribut avec javascript ensuite, mais ensuite, des utilisateurs avec js désactivé (probablement une quantité négligeable de votre userbase ou zéro si votre site a besoin de js) auront toujours leurs mots de passe enregistrés.

Exemple avec jQuery:

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

38voto

Mike Stone Points 21293

J'avais été aux prises avec ce problème d'un tout, avec une touche unique à ce problème. Les utilisateurs privilégiés ne pouvais pas avoir les mots de passe enregistrés travailler pour eux, mais les utilisateurs normaux, il faut. Cela signifiait que les utilisateurs privilégiés eu à se connecter deux fois, la deuxième fois, l'application de n mots de passe enregistrés.

Avec cette exigence, la norme autocomplete="off" méthode ne fonctionne pas sur tous les navigateurs, parce que le mot de passe a été enregistré à partir de la première connexion. Un collègue a trouvé une solution pour remplacer le champ mot de passe lorsqu'il est porté avec un champ nouveau mot de passe, et ensuite se concentrer sur le champ nouveau mot de passe (alors que le raccordement de la même gestionnaire d'événement). Cela a fonctionné (sauf qu'il a provoqué une boucle infinie dans IE6). Peut-être il y avait un moyen de contourner cela, mais il était me causer une migraine.

Enfin, j'ai essayé d'avoir juste le nom d'utilisateur et le mot de passe à l'extérieur de la forme. À ma grande surprise, cela a fonctionné! Il a travaillé sur IE6, et les versions actuelles de Firefox et de Chrome sur Linux. Je n'ai pas testé encore, mais je soupçonne que cela fonctionne dans la plupart, si pas tous les navigateurs (mais ça ne m'étonne pas si il y a un navigateur qui n'a pas soin si il n'y a pas de formulaire).

Voici un exemple de code, avec un peu de jQuery pour le faire fonctionner:

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

31voto

whyAto8 Points 344

Eh bien, c'est un très vieux post, mais je vais donner ma solution, qui à mon équipe avait tenté de le faire pour longtemps. Nous venons d'ajouter un nouveau input type="password" champ à l'intérieur de la forme et l'enveloppa d'un div et fait la div caché. Fait en sorte que cette div est avant le mot de passe d'entrée. Cela a fonctionné pour nous et il n'a pas donné toute option Enregistrer le Mot de passe

Débarquez - 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;}

17voto

Joel Coehoorn Points 190579

Vous pouvez empêcher le navigateur de jumeler les formes en randomisant le nom utilisé pour le champ de mot de passe sur chaque spectacle. Ensuite, le navigateur voit un mot de passe pour le même l’url, mais ne peut pas être sûr que c’est le même mot de passe. Peut-être que c’est de contrôler quelque chose d’autre.

Mise à jour : Notez que cela devrait être en plus de l’utilisation de saisie semi-automatique ou autres tactiques, pas un remplacement pour eux, pour les raisons indiquées par d’autres.

13voto

David Schmitt Points 29384

Véritable authentification à deux facteurs permet d’éviter la dépendance entière sur les mots de passe qui pourraient être stockées dans de nombreux endroits plus que le cache du navigateur de l’utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X