Comment empêcher un navigateur de stocker le mot de passe

je dois empêcher les navigateurs de stocker les valeurs nom d'utilisateur et mot de passe, parce que je travaille sur une application web qui contient des données plus sûres. Mon client m'a demandé de le faire.

j'ai essayé l'attribut autocomplete="off" dans les champs HTML form & password. Mais il ne fonctionne pas dans les derniers navigateurs comme Chrome 55, Firefox 38+, IE 11...etc.

Quelle est la meilleure solution pour cela?

23
demandé sur Jordan Stewart 2016-12-19 09:39:57

11 réponses

Ce n'est pas possible dans les navigateurs modernes, et pour une bonne raison. Les navigateurs modernes offrent des gestionnaires de mots de passe, qui permettent aux utilisateurs d'utiliser des mots de passe plus forts qu'ils ne le feraient habituellement.

comme expliqué par MDN: comment désactiver la forme Autocompletion :

les navigateurs modernes mettent en œuvre la gestion intégrée de mot de passe: lorsque l'utilisateur entre un nom d'utilisateur et mot de passe pour un site, le navigateur offre de se rappeler pour le utilisateur. Lorsque l'utilisateur visite le site, le navigateur autofills les champs de connexion avec les valeurs stockées.

de plus, le navigateur permet à l'utilisateur de choisir un mot de passe principal que le navigateur utilisera pour chiffrer les détails de connexion stockés.

même sans mot de passe maître, la gestion du mot de passe dans le navigateur est généralement considérée comme un gain net pour la sécurité . Puisque les utilisateurs ne doivent pas se souvenir des mots de passe que le navigateur magasins pour eux, ils sont en mesure de choisir des mots de passe plus forts qu'ils ne le seraient autrement.

pour cette raison, de nombreux navigateurs modernes ne prennent pas en charge autocomplete="off" pour les champs de connexion:

  • si un site définit autocomplete="off" pour un formulaire, et que le formulaire inclut des champs d'entrée de nom d'utilisateur et de mot de passe, alors le navigateur offrira toujours de se souvenir de cette connexion, et si l'utilisateur est d'accord, le navigateur auto-remplir ces champs la prochaine fois que l'utilisateur visite la page.

  • si un site définit autocomplete="off" pour les champs d'entrée de nom d'utilisateur et de mot de passe, alors le navigateur offrira encore de se souvenir de cette connexion, et si l'utilisateur est d'accord, le navigateur autofillera ces champs la prochaine fois que l'utilisateur visite la page.

C'est le comportement dans Firefox (depuis la version 38), Google Chrome (depuis 34), et Internet Explorer (depuis la version 11).

si un auteur souhaite empêcher le remplissage automatique des champs de mot de passe dans les pages de gestion des utilisateurs où un utilisateur peut spécifier un nouveau mot de passe pour quelqu'un d'autre que lui-même, autocomplete="new-password" doit être spécifié, bien que le support pour cela n'a pas encore été mis en œuvre dans tous les navigateurs.

20
répondu 4castle 2017-10-17 16:20:04

merci de me répondre. J'ai suivi le lien ci-dessous

désactiver la fonctionnalité "Enregistrer le mot de passe

j'ai résolu le problème en ajoutant simplement les attributs readonly et onfocus="this.removeAttribute('readonly');" en plus de autocomplete="off" aux entrées 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');" >

ça marche très bien pour moi.

18
répondu Sree 2018-02-20 13:38:16

Voici une pure HTML/CSS solution pour Chrome testé dans Version 65.0.3325.162 (construction officielle) (64 bits) .

définit l'entrée type="text" et utilise CSS text-security:disc pour imiter type="password" .

<input type="text" name="username">
<input type="text" name="password" style="text-security:disc; -webkit-text-security:disc;">
4
répondu Natro90 2018-03-15 23:30:36

vous devriez être en mesure de faire une fausse boîte de mot de passe caché pour l'empêcher.

<form>
  <div style="display:none">
    <input type="password" tabindex="-1"/>
  </div>
  <input type="text" name="username" placeholder="username"/>
  <input type="password" name="password" placeholder="password"/>
</form>
2
répondu Simon Briggs 2016-12-27 10:04:32

je pense que ce n'est pas possible dans les derniers navigateurs. La seule façon que vous pouvez faire qui prennent un autre champ de mot de passe caché et l'utilisent pour votre logique après avoir pris la valeur du champ de mot de passe visible tout en soumettant et mettant fictive chaîne dans le champ de mot de passe visible. Dans ce cas, le navigateur peut stocker la ficelle au lieu du mot de passe réel.

0
répondu Ratnakar Reddy 2016-12-19 10:00:15

alors que la solution donnée ci-dessus sont très correctes, si vous avez absolument besoin de la fonctionnalité, alors vous pouvez imiter la situation avec l'entrée personnalisée en utilisant le champ de texte et javascript.

pour une utilisation sécurisée, vous pouvez utiliser n'importe quelle technique de cryptage. Ainsi, vous contournerez le comportement d'enregistrement du mot de passe du navigateur.

si vous voulez en savoir plus sur l'idée, nous pouvons en discuter sur chat. Mais l'essentiel est discuté ci-dessus, et vous pouvez obtenir l'idée.

0
répondu Zain 2016-12-26 15:20:32

essayez ceci, il peut être vous aider, pour plus d'informations visitez Type D'entrée=mot de passe, ne laissez pas le navigateur se souvenir du mot de passe

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 src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="passfld" type="password" autocomplete="off" />
<input type="submit">
0
répondu HirenMangukiya 2017-05-23 11:54:12

une façon serait de générer des noms d'entrées aléatoires et de travailler avec eux.

de cette façon, les navigateurs seront présentés avec le formulaire new à chaque fois et ne seront pas en mesure de pré-remplir les champs d'entrée. Si vous nous fournissez un exemple de code (avez-vous une application js spa ou un rendu côté serveur), je serais heureux de vous aider dans la mise en œuvre.

concerne",

0
répondu 2016-12-28 10:58:03

une chose que vous pouvez faire est de demander à vos utilisateurs de désactiver l'enregistrement du mot de passe pour votre site. Cela peut se faire à l'échelle du navigateur ou de l'origine.

autre chose, vous pouvez forcer les entrées à être vides après le chargement de la page (et après que le navigateur a rempli automatiquement les champs). Mettez ce script à la fin de l'élément <body> .

userIdInputElement.value = "";
userPasswordInputElement.value = "";
0
répondu Walle Cyril 2016-12-28 11:33:45

j'en avais besoin il y a quelques années pour une situation spécifique: deux personnes qui connaissent leurs mots de passe réseau accèdent à la même machine en même temps pour signer un accord légal. Vous ne voulez pas que l'un ou l'autre mot de passe soit sauvegardé dans cette situation parce que sauvegarder un mot de passe est une question juridique et non technique où la présence physique et temporelle des deux personnes est obligatoire. Maintenant, je suis d'accord que c'est une situation rare de rencontrer, mais de telles situations existent et intégré gestionnaires de mots de passe dans les navigateurs web sont inutiles.

Mon technique solution à la ci-dessus était d'échanger 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 (et de continuer ainsi à masquer le mot de passe). Les navigateurs ne demandent pas de sauvegarder les mots de passe qui sont stockés dans des champs de texte.

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

0
répondu CubicleSoft 2018-03-09 15:23:48

vous pouvez faire cela dans google chrome en allant à Paramètres/Mot de passe et formulaires > désactiver [permettre Auto remplir des formulaires web en un seul clic.] et désactiver [offre de sauvegarder les mots de passe avec Google Smart Lock pour les mots de passe.]

-5
répondu Pavan Baddi 2016-12-25 03:14:22