Question

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 nous sommes demandé 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.

Était-ce utile?

La solution

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');

Autres conseils

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" la 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 qu'il 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>

Utilisez simplement

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

en plus

autocomplete="off"

à l'entrée(s) que vous ne souhaitez pas mémoriser les données de formulaire (username, password, etc.) comme indiqué ci-dessous:

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

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

Testé sur les dernières versions des principaux navigateurs c'est à dire Google Chrome, Mozilla Firefox, Microsoft Edge, etc.et fonctionne comme un charme.Espérons que cela aide...

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

Vous pouvez empêcher le navigateur de l'appariement de formes par randomisation au nom utilisé pour le champ 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 la même mot de passe.C'est peut-être le contrôle de quelque chose d'autre.

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

Notez également que cela ne fera qu'empêcher le navigateur de remplissage automatique le mot de passe.Il ne sera pas l'empêcher de le stockage le mot de passe dans n'importe quel niveau de l'arbitraire de la sécurité, le navigateur choisit d'utiliser.

L'utilisation réelle l'authentification à deux facteurs pour éviter la dépendance exclusive sur les mots de passe qui peut être stocké dans des endroits beaucoup plus à celui de l'utilisateur du cache du navigateur.

La façon la plus propre est d'utiliser autocomplete="off" attribut de balise mais Firefox n'est pas correctement obéir lorsque vous changez de champs avec la touche Tab.

Le seul moyen de l'arrêter c'est pour ajouter un faux mot de passe masqué champ qui force le navigateur à renseigner le mot de passe.

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

C'est un vilain hack, parce que vous changez le comportement du navigateur, ce qui devrait être considéré comme une mauvaise pratique.Ne l'utilisez que si vous en avez vraiment besoin.

Note:cela aura pour effet d'arrêter mot de passe remplissage automatique, parce que FF va "sauver" la valeur de #prevent_autofill (qui est vide) et va essayer de remplir tous les mots de passe enregistrés, comme il utilise toujours le premier type="password" d'entrée, il trouve dans les DOM à l'issue de chaque "nom d'utilisateur" d'entrée.

J'ai testé que l'ajout d'autocomplete="off" dans la balise form dans tous les principaux navigateurs.En fait, la Plupart des peuples en NOUS avec IE8 jusqu'à présent.

  1. IE8, IE9, IE10, Firefox, Safari fonctionne très bien.

    Navigateur ne vous demandez pas "enregistrer le mot de passe".Aussi, précédemment enregistré nom d'utilisateur et un mot de passe vide.

  2. Chrome & IE 11 ne pas soutenir l'autocomplete="off" fonction
  3. FF soutenir l'autocomplete="off".mais parfois enregistré existant les informations d'identification sont peuplées.

Mis à jour le 11 juin 2014

Enfin, au-dessous de la croix est un navigateur solution à l'aide de javascript et il fonctionne très bien dans tous les navigateurs.

Besoin de retirer la balise "form" dans le formulaire de connexion.Après la validation côté client, mettre que les pouvoirs cachés formulaire et de le soumettre.

Aussi, ajouter deux méthodes.l'un pour la validation "validateLogin()" et l'autre pour l'écoute entrez événement, alors cliquez sur entrez dans la zone de texte mot de passe ou le bouton "checkAndSubmit()".parce que maintenant, formulaire de connexion n'a pas une balise de formulaire, entrez donc les cas, pas de travail ici.

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();
 }
}

Bonne chance!!!

Pas vraiment, la seule chose que vous avez réellement à faire est de donner des conseils sur le site;peut-être, avant leur première connexion au site, vous pouvez leur montrer un formulaire avec des informations indiquant qu'il n'est pas recommandé qu'ils permettent au navigateur de stocker le mot de passe.

Ensuite, l'utilisateur sera immédiatement suivi l'avis, notez le mot de passe sur un post-it et du ruban adhésif sur leur moniteur.

Ce que j'ai fait, c'est une combinaison de autocomplete="off" et de la compensation des champs de mot de passe à l'aide d'un javascript / jQuery.

jQuery Exemple:

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

En utilisant setTimeout() vous pouvez attendre que le navigateur de remplir le champ avant de l'effacer, sinon le navigateur sera toujours de saisie semi-automatique après avoir effacer le champ.

si autocomplete="off" n'est pas de travail...supprimer la balise form et l'utilisation d'une balise div à la place, puis passer les valeurs d'un formulaire à l'aide de jquery pour le serveur.Cela a fonctionné pour moi.

Parce que autocomplete="off" ne fonctionne pas pour les champs de mot de passe, on doit s'appuyer sur le javascript.Voici une solution simple basé sur les réponses trouvées ici.

Ajouter l'attribut data-mot de passe-autocomplete="off" à votre champ de mot de passe:

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

Inclure les éléments suivants 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');
        });
    });     
});

Cette solution fonctionne aussi bien sur Chrome et FF.

Juste pour que les gens réalisent que la saisie semi-automatique attribut fonctionne la plupart du temps, mais les utilisateurs de puissance peuvent la contourner à l'aide d'un bookmarklet.

Avoir un navigateur d'enregistrer vos mots de passe augmente la protection contre la capture, peut-être l'option la plus sûre est d'enregistrer les mots de passe dans le navigateur, mais de les protéger avec un mot de passe maître (au moins dans Firefox).

J'ai un travail autour qui pourrait vous aider.

Vous pourriez faire une police personnalisée hack.Donc, faire une police personnalisée, avec tous les caractères en tant que dot / cercle / star par exemple.L'utiliser comme une police personnalisée pour votre site web.Vérifiez la façon de faire dans inkscape: comment faire votre propre police

Ensuite, sur votre journal dans l'utilisation de la forme:

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

Puis ajouter votre 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';
}

Jolie croix-navigateur compatible.J'ai essayé IE6+, FF, Chrome et Safari.Assurez-vous que l'oet police que vous convertir ne pas être corrompu.Espérons que cela aide?

Markus soulevé un grand point.J'ai décidé de chercher le autocomplete attribut et le suivant:

Le seul inconvénient à l'utilisation de ce l'attribut est qu'il n'est pas standard (cela fonctionne avec IE et Mozilla navigateurs), et serait la cause de validation XHTML un échec.Je pense que c'est un cas où il est raisonnable de briser la validation cependant. (source)

Donc, je dirais que, bien qu'il ne fonctionne pas à 100% à travers le conseil d'administration, il est traité dans les principaux navigateurs de sorte que son une excellente solution.

La façon la plus simple de résoudre ce problème est de placer des champs de SAISIE à l'extérieur de la balise de FORMULAIRE et d'ajouter deux champs cachés à l'intérieur de la balise FORM.Puis à soumettre un écouteur d'événement avant que les données du formulaire sont envoyées au serveur copier les valeurs d'visible d'entrée pour les invisibles.

Voici un exemple (vous ne pouvez pas exécuter ici, car cette forme d'action n'est pas définie à une véritable script de connexion):

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

Mon js (jquery) solution de contournement consiste à changer le mot de passe d'entrée type de texte sur le formulaire de soumission.Le mot de passe pourrait devenir visible pour une seconde, j'ai donc également masquer l'entrée juste avant que. Je préfère ne pas l'utiliser pour les formulaires de login, mais il est utile (avec autocomplete="off"), par exemple, à l'intérieur de partie administration du site.

Essayer de mettre cela à l'intérieur d'une console (avec jquery), avant de soumettre le formulaire.

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

Testé sur Chrome 44.0.2403.157 (64-bit).

J'ai essayé ci-dessus autocomplete="off" et pourtant, rien de succès.si vous utilisez angular js, ma recommandation est d'aller avec bouton et le ng-click.

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

Déjà, ont accepté de répondre à im ajout de cette si quelqu'un cant résoudre le problème avec la accepté de répondre, il peut aller avec mon mécanisme.

Merci pour la question et les réponses.

J'ai testé beaucoup de solutions.Dynamique champ mot de passe, nom, de multiples champs de mot de passe (invisible pour les faux), changement de type d'entrée à partir de "texte" à "mot de passe", autocomplete="off", la saisie semi-automatique="nouveau mot de passe",...mais rien résolu avec un navigateur récent.

Pour se débarrasser de mot de passe souvenez-vous, j'ai enfin traités le mot de passe en tant que champ de saisie, et de "flou", le texte saisi.

Il est moins "fort" qu'un natif champ de mot de passe depuis sélectionnant le texte tapé le montrerait en texte clair, mais le mot de passe n'est pas souvenu.Elle dépend aussi avoir Javascript activé.

Vous devrez estimer le risque de l'utilisation en dessous de proposition vs mot de passe se rappeler de l'option de navigateur.

Alors que le mot de passe souvenez peut être géré (disbaled par site) par l'utilisateur, c'est bien pour un ordinateur personnel, non pas à un "public" ou un ordinateur partagé.

J'mon cas c'est pour un ERP en cours d'exécution sur les ordinateurs partagés, donc je vais l'essayer, pour ma solution ci-dessous.

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

Un moyen que je connaisse est d'utiliser (par exemple) de JavaScript à copier la valeur du champ mot de passe avant de soumettre le formulaire.

Le principal problème, c'est que la solution est lié à JavaScript.

Puis à nouveau, si elle peut être liée à JavaScript, vous pourriez aussi bien de hachage du mot de passe sur le côté client avant d'envoyer une demande au serveur.

Le vrai problème est beaucoup plus profond que juste l'ajout d'attributs à votre HTML - ce qui est commun problème de sécurité, c'est pourquoi les gens ont inventé des touches matérielles et d'autres choses folles pour la sécurité.

Imaginez que vous avez autocomplete="off" parfaitement de travail dans tous les navigateurs.De t'aider avec la sécurité?Bien sûr, pas de.Les utilisateurs pourront écrire leurs mots de passe dans les manuels scolaires, sur des autocollants collés à leur écran où chaque bureau visiteur peut les voir, de les enregistrer dans des fichiers texte sur le bureau et ainsi de suite.

Généralement, l'application web et développeur web n'est pas responsable en aucune façon pour la sécurité des utilisateurs.Les utilisateurs peuvent se protéger eux-mêmes seulement.Idéalement, ils DOIVENT garder tous les mots de passe dans leur tête et utiliser la fonctionnalité de réinitialisation de mot de passe (ou "contacter l'administrateur") dans le cas où ils l'ont oublié.Sinon, il y aura toujours un risque que le mot de passe peut être vu et volé en quelque sorte.

Donc, soit vous avez quelques fous politique de sécurité avec des touches matérielles (par exemple, certaines banques offrent pour Internet-banking qui, en gros, utilise l'authentification à deux facteurs) ou PAS de SÉCURITÉ de base.Eh bien, c'est un peu plus exagéré bien sûr.Il est important de comprendre ce que vous essayez de protéger contre:

  1. Un accès non autorisé.La plus simple formulaire de connexion est assez fondamentalement.Il y a parfois d'autres mesures prises comme aléatoire des questions de sécurité, les CAPTCHAs, mot de passe durcissement etc.
  2. Informations d'identification en reniflant.HTTPS est UN must si les gens d'accéder à votre application web à partir d'un réseau public Wi-Fi, etc.Mentionner que même en ayant HTTPS, vos utilisateurs doivent changer leur mot de passe régulièrement.
  3. Initié l'attaque.Il y a deux nombreux exemples de tels, à partir du simple vol de vos mots de passe à partir du navigateur ou ceux que vous avez écrit quelque part sur le bureau (ne nécessite pas de compétences informatiques) et se terminant avec la session de forgeage et de l'interception du réseau local de la circulation (même cryptées) et d'accéder à l'application web comme il en a été un autre utilisateur final.

Dans ce poste particulier, je peux voir insuffisante des exigences de la mettre sur le développeur de laquelle il ne sera jamais en mesure de résoudre en raison de la nature du problème - la sécurité de l'utilisateur final.Mon subjective, c'est que les développeurs de dire NON et point sur l'exigence problème plutôt que de perdre du temps sur ces tâches, honnêtement.Ce n'est pas absolument à rendre votre système plus sûr, ce sera plutôt conduire à des cas avec des autocollants sur les moniteurs.Malheureusement, certains patrons n'entendre que ce qu'ils veulent entendre.Cependant, si j'étais vous, je voudrais essayer d'expliquer où est le véritable problème vient de, et que autocomplete="off" ne serait pas la résoudre, à moins qu'il force les utilisateurs à garder tous leurs mots de passe exclusivement dans leur tête!Développeur sur sa fin ne peut pas protéger les utilisateurs complètement, les utilisateurs ont besoin de savoir comment utiliser le système et dans le même temps ne pas exposer leurs sensible et de sécuriser l'information et cela va bien au-delà de l'authentification.

Face à la même HIPAA problème et a trouvé un moyen relativement facile de la solution,

  1. Créer un mot de passe masqué champ avec le nom du champ dans un tableau.

    <input type="password" name="password[]" style="display:none" />
    
  2. Utiliser le même tableau pour le champ mot de passe.

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

Le navigateur (Chrome) peut vous inviter à "Enregistrer le mot de passe", mais peu importe si l'utilisateur sélectionne enregistrer, la prochaine fois qu'ils login le mot de passe auto-remplir le mot de passe masqué champ, la fente zéro dans le tableau, en laissant le 1er slot vide.

J'ai essayé de définir la matrice, comme "mot de passe[part2]", mais il s'en rappelle encore.Je pense qu'il le jette hors si c'est un non indexées tableau car il n'a pas le choix, mais de le placer dans la première place.

Ensuite, vous utilisez votre langage de programmation de choix pour accéder au tableau, PHP par exemple,

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

Puisque la plupart des autocomplete des suggestions, y compris la accepté de répondre, de ne pas travailler aujourd'hui dans les navigateurs web (c'est à direnavigateur web gestionnaires de mots de passe ignorer autocomplete), une nouvelle solution est de permuter entre password et text types et rendre le fond d'une couleur correspond à la couleur du texte lorsque le champ est un simple champ de texte, qui continue de cacher le mot de passe, tout en étant un véritable champ de mot de passe lorsque l'utilisateur (ou un programme comme KeePass) est saisie d'un mot de passe.Les navigateurs de ne pas demander l'enregistrement des mots de passe qui sont stockés dans la plaine, les champs de texte.

L'avantage de cette approche est qu'elle permet une amélioration progressive, et donc n'a pas besoin de Javascript pour un champ de fonctionner comme un champ de mot de passe (vous pouvez aussi commencer par un simple champ de texte à la place et d'appliquer la même approche, mais ce n'est pas vraiment HIPAA PHI/PII-conforme).Ni cette approche dépend des formes cachées, des champs qui ne peuvent pas nécessairement être envoyé vers le serveur (parce qu'ils sont cachés) et certaines de ces astuces ne fonctionnent pas dans plusieurs navigateurs modernes.

plugin jQuery:

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

Pertinentes du code source à partir du lien ci-dessus:

(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));

Démo:

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

Cliquez sur "Ajouter une Entrée" dans le menu puis faites défiler vers le bas de la page pour "Module:Arrêter Le Gestionnaire De Mot De Passe".

Avertissement:Bien que cette approche fonctionne pour les voyants particuliers, il pourrait y avoir des problèmes avec les logiciels de lecture d'écran.Par exemple, un lecteur d'écran peut lire le mot de passe utilisateur à voix haute parce qu'il voit un simple champ de texte.Il peut également y avoir d'autres conséquences imprévues de l'utilisation du plugin ci-dessus.Modifier navigateur web intégré la fonctionnalité doit être fait avec parcimonie à tester une grande variété de conditions et les cas limites.

Est-il possible pour un site de dire au navigateur de ne pas retenir les mots de passe?

Le site web indique au navigateur qu'il s'agit d'un mot de passe en utilisant <input type="password">.Donc, si vous doit le faire à partir d'un site web point de vue alors que vous auriez à changer cela.(Évidemment je ne le recommande pas).

La meilleure solution serait d'avoir à l'utilisateur de configurer son navigateur de façon à ne pas retenir les mots de passe.

Si vous ne voulez pas faire confiance à la saisie semi-automatique drapeau, vous pouvez assurez-vous que l'utilisateur tape dans la boîte, en utilisant l'événement onchange.Le code ci-dessous est un simple formulaire HTML.Le formulaire masqué élément password_edited commence à 0.Lorsque la valeur de mot de passe est modifié, le code JavaScript dans la partie supérieure (pw_edited fonction) modifie la valeur à 1.Lorsque le bouton est pressé, il vérifie la valueenter code ici avant de soumettre le formulaire.De cette façon, même si le navigateur vous ignore et auto-complété le champ, l'utilisateur ne peut pas passer à la page de connexion sans saisir dans le champ mot de passe.Aussi, assurez-vous de vide le champ mot de passe lors de la mise au point est effectuée.Sinon, vous pouvez ajouter un caractère à la fin, puis revenir en arrière et le retirer de tromper le système.Je recommande l'ajout de l'autocomplete="off" pour le mot de passe en plus, mais cet exemple montre comment le code de sauvegarde fonctionne.

<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" ne fonctionne pas pour la désactivation du gestionnaire de mot de passe dans Firefox 31 et probablement pas dans certaines versions antérieures, trop.

La caisse de la discussion chez mozilla à propos de ce problème:https://bugzilla.mozilla.org/show_bug.cgi?id=956906

Nous avons voulu utiliser un deuxième champ de mot de passe pour entrer un mot de passe généré par un jeton.Nous sommes maintenant à l'aide d'une saisie de texte au lieu d'un mot de passe d'entrée.:-(

On m'a donné une tâche similaire pour désactiver la fonction d'auto-remplissage de login et de mots de passe par le navigateur, après beaucoup d'essais et d'erreurs, j'ai trouvé ci-dessous la solution optimale.Il suffit d'ajouter les contrôles ci-dessous avant de vos contrôles d'origine.

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

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

Cela fonctionne bien pour IE11 et Chrome 44.0.2403.107

autocomplete="off" fonctionne pour la plupart des navigateurs modernes, mais une autre méthode que j'ai utilisé qui a travaillé avec succès avec l'Épiphanie (un WebKit-alimenté navigateur pour GNOME) est de stocker un générés aléatoirement préfixe dans l'état de session (ou d'un champ caché, il m'est arrivé d'avoir un adapté variable dans l'état de session est déjà fait), et de l'utiliser pour modifier le nom des champs.L'épiphanie veut encore sauver le mot de passe, mais lorsque vous revenez à la forme de ne pas remplir les champs.

Je n'ai pas eu de problèmes à l'aide de cette méthode:

L'utilisation d'autocomplete="off", ajouter un mot de passe masqué champ et puis une autre non-caché.Le navigateur tente d'auto complète celui qui est caché si il ne respecte pas le autocomplete="off"

Une autre solution est de faire le POSTE à l'aide d'un formulaire masqué où tous les input de type hidden.La forme visible va utiliser des entrées de type "mot de passe".La dernière forme ne sera jamais soumis et donc le navigateur ne peut pas intercepter à toute l'opération de connexion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top