Désactiver la fonctionnalité "Enregistrer le mot de passe" du navigateur

l'une des joies de travailler pour un organisme gouvernemental de soins de santé est d'avoir à faire face à toute la paranoïa entourant le traitement de PHI (information de santé protégée). Ne vous méprenez pas, je suis tout à fait pour faire tout ce qui est possible pour protéger les renseignements personnels des gens (Santé, Finances, habitudes de surf, etc.), mais parfois les gens deviennent un peu trop nerveux.

cas en question: un de nos clients de l'État a récemment découvert que le navigateur fournit la fonctionnalité pratique de 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 y a un peu de tumulte en ce moment et on nous demande de trouver un moyen de désactiver cette fonctionnalité pour notre site.

Question : Existe-t-il un moyen pour un site de dire au navigateur de ne pas offrir de se souvenir des mots de passe? J'ai été autour de développement web a longtemps, mais ne savent pas que j'ai rencontré avant.

Toute aide est appréciée.

403
demandé sur ulidtko 2008-08-28 18:18:09

30 réponses

Je ne suis pas sûr que cela fonctionne dans tous les navigateurs, mais vous devriez essayer de définir autocomplete=" off " sur le formulaire.

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

la façon la plus facile et la plus simple de désactiver les messages de mémorisation de formulaire et de mot de passe et d'empêcher les données de formulaire d'être mises en cache dans l'historique de session est d'utiliser l'attribut d'élément de formulaire autocomplete avec la valeur"off".

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

quelques recherches mineures montrent que cela fonctionne dans IE à mais je ne laisserai aucune garantie ;)

@Joseph : si c'est une exigence stricte de passer la validation XHTML avec le markup réel (ne sait pas pourquoi ce serait cependant), vous pourriez théoriquement ajouter cet attribut avec javascript ensuite, mais les utilisateurs avec js désactivé (probablement un la quantité négligeable de votre userbase ou zéro si votre site nécessite js) aura toujours leurs mots de passe enregistrés.

exemple avec jQuery:

$('#loginForm').attr('autocomplete', 'off');
318
répondu Markus Olsson 2017-05-23 12:03:02

j'avais été aux prises avec ce problème pendant un certain temps, avec une torsion unique au problème. Les utilisateurs privilégiés ne pouvaient pas avoir les mots de passe enregistrés fonctionnent pour eux, mais les utilisateurs normaux en avaient besoin. Cela signifie que les utilisateurs privilégiés ont dû se connecter deux fois, la deuxième fois l'application Pas de mots de passe enregistrés.

avec cette exigence, la méthode standard autocomplete="off" ne fonctionne pas sur tous les navigateurs, car le mot de passe peut avoir été enregistré dès la première connexion. Un collègue a trouvé un solution pour remplacer le champ password quand il était focalisé avec un nouveau champ password, puis se concentrer sur le nouveau champ password (puis connecter le même gestionnaire d'événement). Cela a fonctionné (sauf qu'il a causé une boucle infinie dans IE6). Peut-être qu'il y avait un moyen de contourner ça, mais ça me causait une migraine.

finalement, j'ai essayé d'avoir juste le nom d'utilisateur et le mot de passe en dehors du formulaire. À ma grande surprise, cela a fonctionné! Il a fonctionné sur IE6, et les versions actuelles de Firefox et Chrome sur Linux. Je ne l'ai pas testé davantage, mais je soupçonne qu'il fonctionne dans la plupart sinon tous les navigateurs (mais il ne me surprendrait pas s'il y avait un navigateur là-bas qui ne se souciait pas s'il n'y avait pas de formulaire).

voici quelques exemples de code, ainsi que quelques 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>
36
répondu Mike Stone 2012-06-22 19:05:36

il suffit d'utiliser

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

en plus de

autocomplete= "off"

à l'entrée ou aux entrées que vous ne voulez pas mémoriser les données du formulaire ( username , password , etc.) comme indiqué ci-après:

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

30
répondu Murat Yıldız 2018-01-04 19:02:54

Eh bien, c'est un poste très ancien, mais je vais quand même donner ma solution, que mon équipe avait essayé de réaliser depuis longtemps. Nous avons juste ajouté un nouveau champ input type="password" à l'intérieur du formulaire et l'avons enveloppé dans div et fait le div caché. Assurez-vous que cette div est avant l'entrée de mot de passe réelle. Cela a fonctionné pour nous et il n'a pas donné D'option Enregistrer mot de passe

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;}
28
répondu whyAto8 2014-08-04 04:28:57

vous pouvez empêcher le navigateur de faire correspondre les formulaires en randomisant le nom utilisé pour le champ de mot de passe sur chaque spectacle. Puis le navigateur voit un mot de passe pour le même url, mais ne peut pas être sûr que ce soit le même mot de passe . Peut-être qu'il contrôle autre chose.

mise à jour: notez que ce devrait être en plus de en utilisant autocomplete ou d'autres tactiques, pas un remplacement pour eux, pour le raisons indiquées par les autres.

notez aussi que cela empêchera seulement le navigateur de de remplir automatiquement le mot de passe. Il ne l'empêchera pas de stocker le mot de passe dans n'importe quel niveau d'arbitraire de la sécurité que le navigateur choisit d'utiliser.

16
répondu Joel Coehoorn 2015-02-06 22:36:01

utiliser real two-factor authentication pour éviter la dépendance unique sur les mots de passe qui pourraient être stockés dans beaucoup plus d'endroits que le cache du navigateur de l'utilisateur.

14
répondu David Schmitt 2011-12-27 14:08:09

j'ai testé que l'ajout d'autocomplete=" off " dans l'étiquette de formulaire dans tous les navigateurs principaux. En fait, la plupart des gens en nous utilisant IE8 jusqu'à présent.

  1. IE8, IE9, IE10, Firefox, Safari are works fine.

    Navigateur ne vous demandez pas "enregistrer le mot de passe". De plus, le nom d'utilisateur et le mot de passe enregistrés précédemment ne sont pas remplis.

  2. Chrome & IE 11 ne supporte pas la fonction autocomplete= " off
  3. FF soutenir l'autocomplete="off". mais parfois existant sauvé les justificatifs d'identité sont remplis.

mis à jour le 11 juin 2014

enfin, ci-dessous est une solution de navigateur croisée en utilisant javascript et il fonctionne très bien dans tous les navigateurs.

doit supprimer la balise" form " dans le formulaire de connexion. Après la validation côté client, mettez ces informations d'identification dans une forme cachée et soumettez-les.

ajouter deux méthodes. une pour la validation " validateLogin () "et une autre pour l'écoute de l'événement enter alors que le clic entre dans la zone de texte/mot de passe/bouton"checkAndSubmit ()". parce que maintenant le formulaire de connexion n'a pas d'étiquette de formulaire, alors entrez l'événement qui ne fonctionne pas 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!!!

12
répondu Asik 2015-11-04 17:54:03

la manière la plus propre est d'utiliser l'attribut de balise autocomplete="off" mais Firefox ne lui obéit pas correctement quand vous changez les champs avec Tab.

la seule façon d'arrêter ceci est d'ajouter un faux champ de mot de passe caché qui astuciera le navigateur pour y remplir 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 hack laid, parce que vous changez le comportement du navigateur, qui devrait être considéré comme une mauvaise pratique. Utilisez-le SEULEMENT si vous en avez vraiment besoin.

Note: cela arrêtera effectivement auto-remplir le mot de passe, parce que FF "sauvera" la valeur de #prevent_autofill (qui est vide) et essaiera de peupler tous les mots de passe sauvegardés là, comme il utilise toujours la première entrée type="password" qu'il trouve dans le DOM après l'entrée "username" respective.

12
répondu venimus 2017-06-06 10:22:24

pas vraiment - la seule chose que vous pourriez faire de façon réaliste est d'offrir des conseils sur le site; peut-être, avant leur première connexion, vous pourriez 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.

alors l'utilisateur suivra immédiatement le Conseil, écrira le mot de passe sur une note post-it et l'enregistrera à leur moniteur.

7
répondu Jason Bunting 2008-08-28 14:21:19

ce que j'ai fait est une combinaison d'autocomplete=" off " et d'Effacer les champs de mot de passe en utilisant javascript / jQuery.

exemple de jQuery:

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

en utilisant setTimeout() vous pouvez attendre que le navigateur complète le champ avant de l'effacer, sinon le navigateur sera toujours autocomplete après que vous aurez effacé le champ.

6
répondu Howard Young 2014-10-07 11:30:03

si autocomplete=" off " ne fonctionne pas...supprimez la balise de formulaire et utilisez une balise div à la place, puis passez les valeurs de formulaire en utilisant jquery au serveur. Cela a fonctionné pour moi.

3
répondu Nikhil Dinesh 2014-07-04 08:59:42

parce que autocomplete=" off " ne fonctionne pas pour les champs de mot de passe, on doit se fier à javascript. Voici une solution simple basée sur les réponses trouvées ici.

ajouter l'attribut data-password-autocomplete= "off" à votre champ password:

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

comprend les JS suivants:

$(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 à la fois pour le Chrome et le FF.

3
répondu mfernandes 2017-04-04 11:46:26

juste pour que les gens se rendent compte - l'attribut 'autocomplete' fonctionne la plupart du temps, mais les utilisateurs de puissance peuvent obtenir autour de lui en utilisant un bookmarklet.

avoir un navigateur enregistrer vos mots de passe augmente en fait la protection contre keylogging, donc probablement l'option la plus sûre est d'enregistrer les mots de passe dans le navigateur mais les protéger avec un mot de passe maître (au moins dans Firefox).

2
répondu Thrawn 2011-02-07 02:29:45

j'ai un travail qui peut aider.

vous pouvez faire un hack de police personnalisé. Ainsi, faites une police personnalisée, avec tous les caractères comme un point / cercle / étoile par exemple. Utilisez cette police pour personnaliser votre site web. Vérifier comment le faire dans inkscape: comment faire votre propre police

ensuite, sur votre formulaire, utilisez:

<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 compatible avec les navigateurs croisés. J'ai essayé IE6+, FF, Safari et Chrome. Assurez-vous juste que la police oet que vous convertissez ne soit pas corrompue. Espérons que cela aide?

2
répondu Dai Bok 2014-07-25 11:49:43

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

le seul inconvénient à utiliser ce l'attribut est qu'il n'est pas standard (il fonctionne dans les navigateurs IE et Mozilla), et ferait en sorte que la validation XHTML échouer. Je pense que c'est un cas où il est raisonnable de briser la validation cependant. ( source )

donc je dois dire que bien qu'il ne fonctionne pas à 100% dans l'ensemble, il est manipulé dans les principaux navigateurs afin de son une grande solution.

1
répondu Joseph Pecoraro 2008-08-28 14:29:01

la façon la plus simple de résoudre ce problème est de placer les champs D'entrée en dehors de la balise FORM et d'ajouter deux champs cachés à l'intérieur de la balise FORM. Puis dans un écouteur d'événement soumettre avant que les données de forme soit soumise au serveur copier les valeurs de l'entrée visible aux invisibles.

voici un exemple (vous ne pouvez pas l'exécuter ici, puisque l'action form n'est pas définie à un vrai 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>
1
répondu knee-cola 2015-08-05 14:25:36

ma solution de contournement js (jquery) est de changer le type d'entrée de mot de passe au texte sur le formulaire soumettre . Le mot de passe pourrait devenir visible pendant une seconde, donc je cache aussi l'entrée juste avant cela. je préférerais ne pas l'utiliser pour les formulaires de connexion , mais il est utile (avec autocomplete=" off") par exemple à l'intérieur de l'administration partie du site.

essayez de mettre ceci dans 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 bits).

1
répondu ovalek 2015-08-29 00:14:01

j'ai essayé au-dessus de autocomplete="off" et pourtant quelque chose de réussi. si vous utilisez angular js, ma recommandation est d'aller avec bouton et le ng-click.

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

cela ont déjà une réponse acceptée im ajoutant ceci si quelqu'un ne peut pas résoudre le problème avec la réponse acceptée il peut aller avec mon mécanisme.

Merci pour la question et les réponses.

1
répondu ambarox 2017-03-21 14:15:56

j'ai testé beaucoup de solutions. Nom du champ de mot de passe dynamique, champs de mot de passe multiples (invisibles pour les faux), changement de type d'entrée de "text" à "password", autocomplete="off", autocomplete="new-password",... mais rien résolu avec un navigateur récent.

pour se débarrasser du mot de passe rappelez-vous, j'ai finalement traité le mot de passe comme champ d'entrée, et" flou " le texte tapé.

C'est moins "fort" qu'un natif champ de mot de passe depuis la sélection de la texte tapé le montrerait en texte clair, mais le mot de passe n'est pas souvenu. Cela dépend aussi de L'activation de Javascript.

vous aurez estimé le risque d'utiliser la proposition ci-dessous vs mot de passe mémoriser l'option de navigator.

alors que le mot de passe remember peut être géré (déballé par site) par l'utilisateur, c'est très bien pour un ordinateur personnel, pas pour un" public " ou un ordinateur partagé.

j'mon cas c'est pour un ERP de course sur le partage de la ordinateurs, donc je vais essayer 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">
1
répondu Cedric Simon 2017-04-11 18:39:14

une façon que je connais est D'utiliser (par exemple) JavaScript pour copier la valeur hors du champ Mot de passe avant de soumettre le formulaire.

le problème principal est que la solution est liée au JavaScript.

encore une fois, si cela peut être lié à JavaScript, vous pouvez aussi bien hachez le mot de passe côté client avant d'envoyer une requête au serveur.

0
répondu Huppie 2008-08-28 14:23:48

le vrai problème est beaucoup plus profond que simplement ajouter des attributs à votre HTML - c'est une préoccupation de sécurité commune, c'est pourquoi les gens ont inventé les clés matérielles et d'autres choses folles pour la sécurité.

Imaginez que vous avez autocomplete="off" fonctionne parfaitement dans tous les navigateurs. Ça aiderait pour la sécurité? Bien sûr, pas de. Les utilisateurs écriront leurs mots de passe dans les manuels, sur des autocollants attachés à leur moniteur où chaque visiteur de bureau peut les voir, les sauver au texte fichiers sur le bureau, et ainsi de suite.

en général, les développeurs d'applications et de sites web ne sont pas responsables de la sécurité des utilisateurs. Les utilisateurs peuvent se protéger eux-mêmes. Idéalement, ils doivent conserver tous les mots de passe dans leur tête et utiliser la fonctionnalité de réinitialisation du mot de passe (ou administrateur de contact) au cas où ils l'auraient oublié. Sinon, il y aura toujours un risque que le mot de passe peut être vu et volé d'une façon ou d'une autre.

donc soit vous avez une politique de sécurité folle avec clés matérielles (comme, certaines banques offrent Pour Internet-banking qui utilise essentiellement l'authentification à deux facteurs) ou pas de sécurité essentiellement. 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. accès non autorisé. Le formulaire de connexion le plus simple est suffisant. Il y a parfois des mesures supplémentaires prises comme des questions de sécurité aléatoires, des CAPTCHAs, le durcissement de mot de passe, etc.
  2. Reniflement de justificatifs d'identité. HTTPS est un MUST si les gens accèdent à votre application web à partir de points d'accès Wi-Fi publics, etc. Mentionnez que même avec HTTPS, vos utilisateurs doivent changer leurs mots de passe régulièrement.
  3. Initié attaque. Il y a deux nombreux exemples de tels, À partir de simple vol de vos mots de passe de navigateur ou ceux que vous avez écrit quelque part sur le bureau (ne nécessite pas de compétences informatiques) et se terminant par session forgeage et intercepter le trafic réseau local (même crypté) et accéder à l'application web tout comme il était un autre utilisateur final.

dans ce post particulier, je peux voir des exigences inadéquates posées sur le développeur qu'il ne sera jamais en mesure de résoudre en raison de la nature du problème - sécurité de l'utilisateur final. Mon point subjectif est que le développeur devrait essentiellement dire non et pointer sur le problème des exigences plutôt que de perdre du temps sur de telles tâches, honnêtement. Cela ne rend pas absolument votre système plus sûr, il mènera plutôt aux cas avec des autocollants sur les moniteurs. Malheureusement, certains patrons n'entendre que ce qu'ils veulent entendre. Cependant, si j'étais vous, j'essaierais d'expliquer d'où vient le problème réel, et que autocomplete= " off " ne le résoudrait pas à moins que cela oblige les utilisateurs à garder tous leurs mots de passe exclusivement dans leur tête! Développeur de son côté ne peut pas protéger complètement les utilisateurs, les utilisateurs ont besoin de savoir comment utiliser le système et en même temps ne pas exposer leur sensible / sécurisé informations et cela va bien au-delà de l'authentification.

0
répondu ruruskyi 2014-06-26 11:13:32

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

  1. créez un champ de mot de passe caché avec le nom du champ comme tableau.

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

    <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 remplira automatiquement le champ de mot de passe caché, la fente zéro dans le tableau, laissant la première fente vide.

j'ai essayé de définir le tableau, comme" password[part2] " mais il se souvient encore. Je pense qu'il le jette si c'est un tableau non indexé parce qu'il n'a pas d'autre choix que de le laisser tomber à la première place.

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

echo $_POST['password'][1];
0
répondu Mike 2016-03-18 15:26:56

étant donné que la plupart des suggestions autocomplete , y compris la réponse acceptée, ne fonctionnent pas dans les navigateurs web d'aujourd'hui (c.-à-d. les gestionnaires de mot de passe de navigateur Web ignorer autocomplete ), une solution plus nouvelle est d'échanger entre les types password et text et de faire correspondre la couleur de fond de la couleur du texte lorsque le champ est un champ de texte simple, qui continue à cacher le mot de passe tout en étant un vrai champ de mot de passe lorsque l'utilisateur (ou un programme comme KeePass) est entré un mot de passe. Navigateur ne demandez pas de sauvegarder les mots de passe qui sont stockés dans des champs de texte.

l'avantage de cette approche est qu'elle permet une amélioration progressive et ne nécessite donc pas Javascript pour qu'un champ fonctionne comme un champ de mot de passe normal (vous pouvez également commencer avec un champ de texte simple à la place et appliquer la même approche, mais ce N'est pas vraiment conforme à la Phi/PII HIPAA). Cette approche ne dépend pas non plus de formes/champs cachés qui ne seraient pas nécessairement envoyés au serveur (parce qu'ils sont cachés) et certaines de ces astuces ne fonctionnent pas dans plusieurs navigateurs modernes.

jQuery plugin:

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

code source pertinent 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 jusqu'au bas de la page vers"Module: Stop Password Manager".

avertissement: bien que cette approche fonctionne pour les personnes voyantes, il pourrait y avoir des problèmes avec le logiciel de lecteur d'écran. Par exemple, un lecteur d'écran peut lire le mot de passe de l'utilisateur à haute voix parce qu'il voit un champ de texte simple. Il peut également y avoir d'autres imprévus conséquences de l'utilisation du plugin ci-dessus. La modification de la fonctionnalité intégrée du navigateur web doit être effectuée avec parcimonie en testant une grande variété de conditions et de cas de bord.

0
répondu CubicleSoft 2018-03-09 15:26:20

Est-il un moyen 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 faire ceci d'une perspective de site web, alors vous devriez changer cela. (Évidemment je ne recommande pas cela).

la meilleure solution serait que l'utilisateur configure son navigateur pour qu'il ne se souvienne pas les mots de passe.

-1
répondu Joseph Pecoraro 2008-08-28 14:23:41

si vous ne voulez pas faire confiance au drapeau autocomplete, vous pouvez vous assurer que l'utilisateur tape dans la boîte en utilisant l'événement onchange. Le code ci-dessous est un simple format HTML. L'élément de formulaire caché password_edited commence par 0. Lorsque la valeur du mot de passe est changée, le JavaScript en haut (fonction pw_edited) change la valeur à 1. Quand le bouton est appuyé, il vérifie le code de valueenter ici avant de soumettre le formulaire. De cette façon, même si le navigateur vous ignore et autocomplète le champ, l'utilisateur ne peut pas passer la page de connexion sans taper dans le champ de mot de passe. De plus, assurez-vous de vider le champ Mot de passe lorsque la mise au point est définie. Sinon, vous pouvez ajouter un caractère à la fin, puis revenir en arrière et le retirer de tromper le système. Je recommande d'ajouter l'autocomplete="off" au 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>
-1
répondu Tom 2012-10-21 22:43:33

autocomplete= " off " ne fonctionne pas pour désactiver le gestionnaire de mots de passe dans Firefox 31 et très probablement pas dans certaines versions précédentes, aussi.

consultez la discussion à mozilla à propos de ce numéro: https://bugzilla.mozilla.org/show_bug.cgi?id=956906

nous voulions utiliser un second champ de mot de passe pour entrer un mot de passe unique généré par un token. Maintenant, nous utilisons une entrée de texte au lieu d'une entrée de mot de passe. :- (

-1
répondu Andreas Stankewitz 2014-08-08 08:03:40

on m'a donné une tâche similaire pour désactiver l'auto-remplissage du nom de connexion et des mots de passe par le navigateur, après beaucoup d'essais et d'erreurs, j'ai trouvé la solution ci-dessous pour être 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 très bien pour IE11 et Chrome 44.0.2403.107

-1
répondu Sheiky 2015-07-27 13:58:22

autocomplete= " off " fonctionne pour la plupart des navigateurs modernes, mais une autre méthode que j'ai utilisée qui a fonctionné avec succès avec Epiphany (un navigateur alimenté par WebKit pour GNOME) est de stocker un préfixe généré au hasard dans l'état de session (ou un champ caché, je me suis avéré avoir une variable appropriée dans l'état de session déjà), et l'utiliser pour modifier le nom des champs. Epiphany veut toujours sauvegarder le mot de passe, mais en retournant au formulaire, il ne remplira pas les champs.

-2
répondu Peter Nelson 2011-04-15 12:41:15

Je n'ai eu aucun problème avec cette méthode:

utilisez autocomplete= "off", ajoutez un champ de mot de passe caché puis un autre non caché. Le navigateur essaie de remplir automatiquement le caché s'il ne respecte pas autocomplete= " off "

-2
répondu Spechal 2012-04-24 20:30:03

une autre solution est de faire le poteau en utilisant une forme cachée où toutes les entrées sont de type caché. Le formulaire visible utilisera l'entrée de type "mot de passe". Ce dernier formulaire ne sera jamais soumis et donc le navigateur ne peut pas intercepter du tout l'opération de connexion.

-2
répondu Lord of the Goo 2013-02-06 16:03:25