web-dev-qa-db-fra.com

Type d'entrée = mot de passe, ne laissez pas le navigateur s'en souvenir.

Je me souviens d’avoir trouvé un moyen d’avoir un <input type="password" /> tel que le navigateur non invite l’utilisateur à enregistrer le mot de passe. Mais je dessine un blanc. Existe-t-il un attribut HTML ou une astuce JavaScript pour y parvenir?

93
DavGarcia

Essayez d'utiliser autocomplete="off". Pas sûr que tous les navigateurs le supportent, cependant. MSDN docs ici .

EDIT: Remarque: la plupart des navigateurs ont cessé de prendre en charge cet attribut. Voir autocomplete = "off" est-il compatible avec tous les navigateurs modernes?

C'est sans doute quelque chose qui devrait être laissé à l'utilisateur plutôt qu'au concepteur de site Web.

119
tvanfosson

<input type="password" autocomplete="off" />

J'aimerais juste ajouter qu'en tant qu'utilisateur, je pense que c'est très ennuyeux et fastidieux à surmonter. Je recommande fortement de ne pas utiliser cette option, car cela risquerait d’aggraver vos utilisateurs.

Les mots de passe ne sont déjà pas stockés dans la MRU et les machines publiques correctement configurées ne sauvegardent même pas le nom d'utilisateur.

60
matpie

J'ai résolu d'une autre manière. Vous pouvez essayer ça.

<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
// Using jQuery
$(function(){                                               
    setTimeout(function(){
        $("input#passfld").attr("type","password");
    },10);
});


// or in pure javascript
 window.onload=function(){                                              
    setTimeout(function(){  
        document.getElementById('passfld').type = 'password';
    },10);
  }   
</script>

#autrement

 <script type="text/javascript">    
 function setAutoCompleteOFF(tm){
    if(typeof tm =="undefined"){tm=10;}
    try{
    var inputs=$(".auto-complete-off,input[autocomplete=off]"); 
    setTimeout(function(){
        inputs.each(function(){     
            var old_value=$(this).attr("value");            
            var thisobj=$(this);            
            setTimeout(function(){  
                thisobj.removeClass("auto-complete-off").addClass("auto-complete-off-processed");
                thisobj.val(old_value);
            },tm);
         });
     },tm); 
    }catch(e){}
  }
 $(function(){                                              
        setAutoCompleteOFF();
    });
</script>

// vous devez ajouter l'attribut autocomplete = "off" ou vous pouvez ajouter la classe .auto-complete-off dans la zone de saisie et en profiter

Exemple:

  <input id="passfld" type="password" autocomplete="off" />
    OR
  <input id="passfld" class="auto-complete-off" type="password"  />
12
SarwarCSE

En ce qui concerne les problèmes de sécurité, voici ce qu’un consultant en sécurité vous dira sur l’ensemble du problème sur le terrain (il s’agit d’un audit de sécurité indépendant):

Complétion automatique HTML activée - La complétion automatique est activée pour les champs de mot de passe des formulaires HTML. La plupart des navigateurs permettent de mémoriser les informations d'identification des utilisateurs saisies dans les formulaires HTML.

Risque relatif: faible

Systèmes/appareils concernés: o https: //* ** * *** /

Je conviens également que cela devrait couvrir tout champ contenant des données véritablement privées. Je pense qu'il est correct d'obliger une personne à toujours taper ses informations de carte de crédit, son code CVC, ses mots de passe, noms d'utilisateur, etc. chaque fois que ce site va accéder à tout ce qui doit être gardé en sécurité [universellement ou par les exigences de conformité légale]. Par exemple: formulaires d'achat, sites bancaires/crédits, sites fiscaux, données médicales, fédérales, nucléaires, etc. - non Sites tels que Stack Overflow ou Facebook.

Autres types de sites - par exemple TimeStar Online pour le travail au compteur - c'est stupide, car j'utilise toujours le même PC/le même compte au travail, je ne peux pas sauvegarder les informations d'identification sur ce site - étrangement, je peux le faire sur mon Android, mais pas sur un iPad. Même les ordinateurs partagés, cela ne serait pas trop grave, car enregistrer pour quelqu'un d'autre ne fait vraiment pas gêner votre superviseur. (Ils doivent entrer et supprimer les poinçons erronés - il suffit de choisir de ne pas économiser sur les PC publics).

5
Michael R Lewis

J'ai essayé ce qui suit et il semble que cela fonctionne sur n'importe quel navigateur:

<input id="passfld" type="text" autocomplete="off" />

<script type="text/javascript">
    $(function(){  
        var passElem = $("input#passfld");
        passElem.focus(function() { 
            passElem.prop("type", "password");                                             
        });
    });
</script>

Cette méthode est beaucoup plus sûre que l’utilisation de techniques de dépassement du délai d’attente, car elle garantit que le champ de saisie cédera le mot de passe lorsque l’utilisateur l’a centré.

5
Apostolidis

Voici la meilleure réponse, et la plus facile! Placez un champ de mot de passe supplémentaire devant votre champ input et définissez le display:none afin que, lorsque le navigateur le remplisse, il le fasse dans une input qui ne vous intéresse pas.

Change ça:

<input type="password" name="password" size="25" class="input" id="password" value="">

pour ça:

<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
4
Captain Fantastic

Lisez aussi cette réponse où il utilise cette solution simple qui fonctionne partout (voir aussi le correctif pour Safari mobile):

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

Vous pouvez utiliser JQuery, sélectionnez l'élément par identifiant:

$("input#Password").attr("autocomplete","off");

Ou sélectionnez l'article par type:

$("input[type='password']").attr("autocomplete","off");

Ou aussi:

Vous pouvez utiliser du Javascript pur:

document.getElementById('Password').autocomplete = 'off';
2
Fernando

vous pouvez aussi l'utiliser comme suit

$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
1

J'ai trouvé les travaux suivants sur Firefox et Chrome.

<form ... > <!-- more stuff -->
<input name="person" type="text" size=30 value="">
<input name="mypswd" type="password" size=6 value="" autocomplete="off">
<input name="userid" type="text" value="security" style="display:none">
<input name="passwd" type="password" value="faker" style="display:none">
<!-- more stuff --> </form>

Tout cela se trouve dans la section formulaires. "personne" et "mypswd" sont ce que vous voulez, mais le navigateur enregistre les "id utilisateur" et "passwd" une fois, et jamais plus, car ils ne changent pas. Vous pouvez éliminer le champ "personne" si vous n'en avez pas vraiment besoin. Dans ce cas, tout ce que vous voulez, c'est le champ "mypswd", qui peut changer d'une manière connue de l'utilisateur de votre page Web.

0
Dick Guertin
<input type="password" placeholder="Enter New Password" autocomplete="new-password">

Voici.

0
Bhaumik Thakkar

Dans le cas de la plupart des principaux navigateurs, le fait d’avoir une entrée à l’extérieur sans connexion à aucun formulaire incite le navigateur à penser qu’il n’ya pas de soumission. Dans ce cas, vous devrez utiliser une validation JS pure pour votre connexion et le cryptage de vos mots de passe sera également nécessaire.

Avant:

<form action="..."><input type="password"/></form>

Après:

<input type="password"/>
0
IamGuest

La seule façon de désactiver firefox, Edge et Internet Explorer est d’ajouter autocomplete = "false" dans ma déclaration de formulaire, comme suit:

  <form action="postingpage.php" autocomplete="false" method="post">

et je dois ajouter le autocomplete = "off" à mon entrée de formulaire et changer le type en texte comme:

     <input type="text" autocomplete="off">

Il semble que ce code HTML doive être normalisé avec les navigateurs. le type de formulaire = mot de passe doit être révisé de manière à remplacer les paramètres du navigateur . Le seul problème que j'ai est que j'ai perdu mon masquage d'entrée. Mais du bon côté des choses, l’ennuyeux "Ce site n’est pas sécurisé" ne s'affiche pas dans Firefox. 

pour moi, ce n'est pas grave, car l'utilisateur est déjà authentifié et sa modification de nom d'utilisateur et de mot de passe

0
drtechno