L'une des joies de travailler pour une agence gouvernementale de soins de santé est de devoir faire face à toute la paranoïa liée au traitement des PHI (Protected Health Information). Ne vous méprenez pas, je suis tout pour faire tout ce qui est possible pour protéger les informations personnelles des gens (santé, finances, habitudes de surf, etc.), mais parfois les gens deviennent un peu trop nerveux.
Exemple: un de nos clients d'État a récemment découvert que le navigateur fournit la fonctionnalité pratique pour enregistrer votre mot de passe. Nous savons tous qu'il est là depuis un certain temps et qu'il est complètement facultatif et qu'il appartient à l'utilisateur final de décider s'il s'agit d'une décision intelligente à utiliser ou non. 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 proposer de se souvenir des mots de passe? Je travaille depuis longtemps sur le développement Web, mais je ne sais pas si je l'ai déjà rencontré auparavant.
Toute aide est appréciée.
la source
Réponses:
Je ne sais pas si cela fonctionnera dans tous les navigateurs, mais vous devriez essayer de définir autocomplete = "off" sur le formulaire.
Quelques recherches mineures montrent que cela fonctionne dans IE mais je ne laisse aucune garantie;)
@Joseph : Si c'est une exigence stricte de passer la validation XHTML avec le balisage réel (je ne sais pas pourquoi, cependant), vous pourriez théoriquement ajouter cet attribut avec javascript par la suite, mais ensuite les utilisateurs avec js désactivé (probablement une quantité négligeable de votre base d'utilisateurs ou zéro si votre site nécessite js) auront toujours leurs mots de passe enregistrés.
Exemple avec jQuery:
la source
autocomplete="off"
desinput type="password"
champs. msdn.microsoft.com/en-us/library/ie/ms533486%28v=vs.85%29.aspxpour les entrées que vous ne voulez pas de se rappeler des données de formulaire (
username
,password
, etc.) comme indiqué ci - dessous:Testé sur les dernières versions des principaux navigateurs à savoir
Google Chrome
,Mozilla Firefox
,Microsoft Edge
, etc. , et fonctionne comme un charme. J'espère que cela t'aides.la source
J'avais lutté avec ce problème pendant un certain temps, avec une tournure unique au problème. Les utilisateurs privilégiés ne pouvaient pas faire fonctionner les mots de passe enregistrés pour eux, mais les utilisateurs normaux en avaient besoin. Cela signifiait que les utilisateurs privilégiés devaient se connecter deux fois, la deuxième fois sans appliquer de mots de passe enregistrés.
Avec cette exigence, la
autocomplete="off"
méthode standard ne fonctionne pas sur tous les navigateurs, car le mot de passe peut avoir été enregistré lors de la première connexion. Un collègue a trouvé une solution pour remplacer le champ de mot de passe lorsqu'il était ciblé par un nouveau champ de mot de passe, puis se concentrer sur le nouveau champ de mot de passe (puis connecter le même gestionnaire d'événements). Cela a fonctionné (sauf qu'il a provoqué une boucle infinie dans IE6). Peut-être qu'il y avait un moyen de contourner cela, mais cela me causait une migraine.Enfin, 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é plus loin, mais je soupçonne que cela fonctionne dans la plupart sinon tous les navigateurs (mais cela ne me surprendrait pas s'il y avait un navigateur 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:
la source
Eh bien, c'est un très vieux poste, mais je vais quand même donner ma solution, que mon équipe essayait depuis longtemps de réaliser. Nous venons d'ajouter un nouveau champ de type d'entrée = "mot de passe" à l'intérieur du formulaire et de l'envelopper dans div et de le masquer. Assurez-vous que ce div est avant la saisie du mot de passe réel. Cela a fonctionné pour nous et n'a donné aucune option Enregistrer le mot de passe
Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview
HTML:
CSS:
la source
Vous pouvez empêcher le navigateur de faire correspondre les formulaires en randomisant le nom utilisé pour le champ de mot de passe à chaque émission. Ensuite, le navigateur voit un mot de passe pour la même URL, mais ne peut pas être sûr qu'il s'agit du même mot de passe . C'est peut-être contrôler quelque chose d'autre.
Mise à jour: notez que cela devrait être en plus d' utiliser la saisie semi-automatique ou d'autres tactiques, pas un remplacement pour eux, pour les raisons indiquées par d'autres.
Notez également que cela empêchera uniquement le navigateur de compléter automatiquement le mot de passe. Cela ne l'empêchera pas de stocker le mot de passe dans le niveau arbitraire de sécurité que le navigateur choisit d'utiliser.
la source
Utilisez une véritable authentification à deux facteurs pour éviter la seule dépendance vis-à-vis des mots de passe qui pourraient être stockés dans beaucoup plus d'endroits que le cache du navigateur de l'utilisateur.
la source
La façon la plus propre est d'utiliser
autocomplete="off"
l'attribut tag mais Firefox ne lui obéit pas correctement lorsque vous changez de champs avec Tab.La seule façon d'arrêter cela est d'ajouter un faux champ de mot de passe caché qui incite le navigateur à y saisir le mot de passe.
C'est un vilain piratage, car vous modifiez le comportement du navigateur, ce qui devrait être considéré comme une mauvaise pratique. Utilisez-le uniquement si vous en avez vraiment besoin.
Remarque: cela arrêtera efficacement le remplissage automatique du mot de passe, car FF "enregistrera" la valeur de
#prevent_autofill
(qui est vide) et essaiera de remplir tous les mots de passe enregistrés, car il utilise toujours la premièretype="password"
entrée qu'il trouve dans DOM après le "nom d'utilisateur" respectif contribution.la source
J'ai testé que l'ajout de autocomplete = "off" dans la balise de formulaire dans tous les principaux navigateurs. En fait, la plupart des peuples des États-Unis utilisent IE8 jusqu'à présent.
Mis à jour le 11 juin 2014
Enfin, ci-dessous est une solution multi-navigateur utilisant javascript et cela fonctionne bien dans tous les navigateurs.
Besoin de supprimer la balise "form" dans le formulaire de connexion. Après la validation côté client, mettez ces informations d'identification sous forme masquée et soumettez-les.
Ajoutez également deux méthodes. un pour la validation "validateLogin ()" et un autre pour écouter l'événement enter en cliquant sur enter dans la zone de texte / mot de passe / bouton "checkAndSubmit ()". car maintenant le formulaire de connexion n'a pas de balise de formulaire, entrez donc l'événement ne fonctionne pas ici.
HTML
Javascript
Bonne chance!!!
la source
Pas vraiment - la seule chose que vous pourriez faire de façon réaliste est d'offrir des conseils sur le site; peut-être qu'avant leur première connexion, vous pouvez leur montrer un formulaire contenant des informations indiquant qu'il n'est pas recommandé de laisser le navigateur stocker le mot de passe.
Ensuite, l'utilisateur suivra immédiatement les conseils, notera le mot de passe sur un post-it et l'enregistrera sur son moniteur.
la source
Ce que j'ai fait est une combinaison de saisie semi-automatique = "off" et d'effacement des champs de mot de passe à l'aide d'un javascript / jQuery.
Exemple jQuery:
En utilisant,
setTimeout()
vous pouvez attendre que le navigateur termine le champ avant de l'effacer, sinon le navigateur se terminera toujours automatiquement après avoir effacé le champ.la source
si autocomplete = "off" ne fonctionne pas ... supprimez la balise de formulaire et utilisez une balise div à la place, puis transmettez les valeurs du formulaire à l'aide de jquery au serveur. Cela a fonctionné pour moi.
la source
Parce que l'autocomplete = "off" ne fonctionne pas pour les champs de mot de passe, il faut se fier à javascript. Voici une solution simple basée sur les réponses trouvées ici.
Ajoutez l'attribut data-password-autocomplete = "off" à votre champ de mot de passe:
Inclure le JS suivant:
Cette solution fonctionne pour Chrome et FF.
la source
Juste pour que les gens le réalisent - l'attribut 'autocomplete' fonctionne la plupart du temps, mais les utilisateurs expérimentés peuvent le contourner en utilisant un bookmarklet.
Le fait qu'un navigateur enregistre vos mots de passe augmente en fait la protection contre le keylogging, donc probablement 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 principal (au moins dans Firefox).
la source
J'ai un travail à faire, ce qui peut aider.
Vous pouvez créer un hack de police personnalisé. Donc, faites une police personnalisée, avec tous les caractères comme un point / cercle / étoile par exemple. Utilisez-la comme police personnalisée pour votre site Web. Vérifiez comment faire cela dans Inkscape: comment créer votre propre police
Ensuite, sur votre formulaire de connexion, utilisez:
Ajoutez ensuite votre css:
Compatible avec plusieurs navigateurs. J'ai essayé IE6 +, FF, Safari et Chrome. Assurez-vous simplement que la police oet que vous convertissez n'est pas corrompue. J'espère que cela aide?
la source
Le moyen le plus simple de résoudre ce problème consiste à placer les champs INPUT à l'extérieur de la balise FORM et à ajouter deux champs masqués à l'intérieur de la balise FORM. Ensuite, dans un écouteur d'événements de soumission avant que les données du formulaire ne soient soumises au serveur, copiez les valeurs de l'entrée visible vers les invisibles.
Voici un exemple (vous ne pouvez pas l'exécuter ici, car l'action de formulaire n'est pas définie sur un vrai script de connexion):
la source
Ma solution de contournement js (jquery) consiste à changer le type d'entrée du mot de passe en texte sur le formulaire soumis . Le mot de passe pourrait devenir visible pendant une seconde, donc je cache également l'entrée juste avant cela. Je préfère ne pas l'utiliser pour les formulaires de connexion , mais cela est utile (avec autocomplete = "off"), par exemple dans la partie administration du site Web.
Essayez de mettre cela dans une console (avec jquery), avant de soumettre le formulaire.
Testé sur Chrome 44.0.2403.157 (64 bits).
la source
J'ai testé de nombreuses solutions. Nom de champ de mot de passe dynamique, plusieurs champs de mot de passe (invisibles pour les faux), changement du type d'entrée de "texte" en "mot de passe", autocomplete = "off", autocomplete = "nouveau-mot de passe", ... mais rien ne l'a résolu avec les récents navigateur.
Pour me débarrasser du mot de passe, souvenez-vous, j'ai finalement traité le mot de passe comme un champ de saisie et "flouté" le texte tapé.
Il est moins «sûr» qu'un champ de mot de passe natif car la sélection du texte tapé l'afficherait en texte clair, mais le mot de passe n'est pas mémorisé. Cela dépend également de l'activation de Javascript.
Vous aurez une estimation du risque d'utilisation de l'option de proposition ci-dessous par rapport au mot de passe du navigateur.
Bien que la mémorisation des mots de passe puisse être gérée (déséquilibrée par site) par l'utilisateur, c'est bien pour un ordinateur personnel, pas pour un ordinateur "public" ou partagé.
Dans mon cas, c'est pour un ERP fonctionnant sur des ordinateurs partagés, je vais donc essayer ma solution ci-dessous.
la source
Markus a soulevé un grand point. J'ai décidé de rechercher l'
autocomplete
attribut et j'ai obtenu ce qui suit:Je dois donc dire que même si cela ne fonctionne pas à 100%, il est géré dans les principaux navigateurs, c'est donc une excellente solution.
la source
J'ai essayé dessus
autocomplete="off"
et pourtant tout a réussi. si vous utilisez js angulaire, ma recommandation est d'aller avec le bouton et le ng-click.Cela a 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.
la source
enter
oureturn
pour soumettre un formulaire.Une façon que je sais est d'utiliser (par exemple) JavaScript pour copier la valeur du champ de mot de passe avant de soumettre le formulaire.
Le principal problème est que la solution est liée à JavaScript.
Là encore, s'il peut être lié à JavaScript, vous pouvez aussi hacher le mot de passe côté client avant d'envoyer une demande au serveur.
la source
Le vrai problème est beaucoup plus profond que l'ajout d'attributs à votre code HTML - c'est un problème de sécurité commun, c'est pourquoi les gens ont inventé des clés matérielles et d'autres choses folles pour la sécurité.
Imaginez que la saisie semi-automatique = "off" fonctionne parfaitement dans tous les navigateurs. Est-ce que cela aiderait à la sécurité? Bien sûr que non. Les utilisateurs noteront leurs mots de passe dans des manuels, sur des autocollants attachés à leur moniteur où chaque visiteur du bureau peut les voir, les enregistrer dans des fichiers texte sur le bureau, etc.
En règle générale, l'application Web et le développeur Web ne sont en aucun cas responsables de la sécurité de l'utilisateur final. Les utilisateurs finaux ne peuvent se protéger que. Idéalement, ils DOIVENT garder tous les mots de passe dans leur tête et utiliser la fonctionnalité de réinitialisation du mot de passe (ou contacter l'administrateur) au cas où ils l'oublieraient. Sinon, il y aura toujours un risque que le mot de passe soit visible et volé.
Donc, soit vous avez une politique de sécurité folle avec des clés matérielles (comme certaines banques proposent des services bancaires sur Internet qui utilisent essentiellement une authentification à deux facteurs), soit AUCUNE SÉCURITÉ en gros. Eh bien, c'est un peu exagéré bien sûr. Il est important de comprendre contre quoi essayez-vous de vous protéger:
Dans ce post, je peux voir des exigences inadéquates imposées au développeur qu'il ne pourra jamais résoudre en raison de la nature du problème - la sécurité de l'utilisateur final. Mon point de vue 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, cela conduira plutôt aux étuis avec des autocollants sur les moniteurs. Malheureusement, certains patrons n'entendent que ce qu'ils veulent entendre. Cependant, si j'étais vous, j'essaierais d'expliquer d'où vient le problème réel, et cette autocomplete = "off" ne le résoudrait que si elle obligeait les utilisateurs à garder tous leurs mots de passe exclusivement dans leur tête! Le développeur de son côté ne peut pas protéger complètement les utilisateurs,
la source
Face au même problème HIPAA et trouvé une solution relativement simple,
Créez un champ de mot de passe masqué avec le nom du champ sous forme de tableau.
Utilisez le même tableau pour le champ de mot de passe réel.
Le navigateur (Chrome) peut vous inviter à "Enregistrer le mot de passe", mais peu importe si l'utilisateur sélectionne enregistrer, la prochaine fois qu'il se connectera, le mot de passe remplira automatiquement le champ de mot de passe caché, l'emplacement zéro dans la baie, en laissant le 1er emplacement vide.
J'ai essayé de définir le tableau, tel que "mot de passe [part2]", mais il s'en souvenait toujours. Je pense qu'il le jette s'il s'agit d'un tableau non indexé car il n'a pas d'autre choix que de le déposer au premier endroit.
Ensuite, vous utilisez votre langage de programmation de choix pour accéder au tableau, PHP par exemple,
la source
Comme la plupart des
autocomplete
suggestions, y compris la réponse acceptée, ne fonctionnent pas dans les navigateurs web d'aujourd'hui (gestionnaires de mot de passe du navigateur web -à- dire ignorerautocomplete
), une solution plus originale est d'échanger entrepassword
ettext
types et faire correspondre la couleur de fond la couleur du texte lorsque le champ est un champ de texte brut, qui continue de masquer le mot de passe tout en étant un véritable champ de mot de passe lorsque l'utilisateur (ou un programme comme KeePass) entre un mot de passe. Les navigateurs ne demandent pas d'enregistrer les mots de passe stockés dans des champs de texte brut.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 par un champ de texte brut à la place et appliquer la même approche, mais ce n'est pas vraiment HIPAA Conforme PHI / PII). Cette approche ne dépend pas non plus de formulaires / champs cachés qui ne sont pas nécessairement envoyés au serveur (car ils sont masqués) et certaines de ces astuces ne fonctionnent pas non plus dans plusieurs navigateurs modernes.
Plugin jQuery:
https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js
Code source pertinent à partir du lien ci-dessus:
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 jusqu'à "Module: Stop Password Manager".
Avertissement: Bien que cette approche fonctionne pour les personnes voyantes, il peut y avoir des problèmes avec le logiciel de lecture d'écran. Par exemple, un lecteur d'écran peut lire à haute voix le mot de passe de l'utilisateur car il voit un champ de texte en clair. L'utilisation du plug-in ci-dessus peut également entraîner d'autres conséquences imprévues. La modification de la fonctionnalité de navigateur Web intégrée doit être effectuée avec parcimonie en testant une grande variété de conditions et de cas marginaux.
la source
Le site Web indique au navigateur qu'il s'agit d'un mot de passe en utilisant
<input type="password">
. Donc, si vous devez le faire du point de vue d'un site Web, vous devrez changer cela. (Évidemment, je ne le recommande pas).La meilleure solution serait que l'utilisateur configure son navigateur pour qu'il ne se souvienne pas des mots de passe.
la source
Si vous ne souhaitez pas faire confiance à l'indicateur de saisie semi-automatique, vous pouvez vous assurer que l'utilisateur tape dans la zone à l'aide de l'événement onchange. Le code ci-dessous est un simple formulaire HTML. L'élément de formulaire masqué password_edited commence défini sur 0. Lorsque la valeur du mot de passe est modifiée, le JavaScript en haut (fonction pw_edited) change la valeur à 1. Lorsque le bouton est enfoncé, il vérifie le code de valeur ici avant de soumettre le formulaire . De cette façon, même si le navigateur vous ignore et complète automatiquement le champ, l'utilisateur ne peut pas passer la page de connexion sans saisir le mot de passe. Assurez-vous également de vider le champ du 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 supprimer pour tromper le système. Je recommande également d'ajouter l'autocomplete = "off" au mot de passe, mais cet exemple montre comment fonctionne le code de sauvegarde.
la source
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 antérieures.
Consultez la discussion sur mozilla à propos de ce problème: https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Nous voulions utiliser un deuxième champ de mot de passe pour entrer un mot de passe à usage unique généré par un jeton. Maintenant, nous utilisons une entrée de texte au lieu d'une entrée de mot de passe. :-(
la source
On m'a donné une tâche similaire pour désactiver le remplissage automatique 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 optimale. Ajoutez simplement les contrôles ci-dessous avant vos contrôles d'origine.
Cela fonctionne bien pour IE11 et Chrome 44.0.2403.107
la source
autocomplete = "off" fonctionne pour la plupart des navigateurs modernes, mais une autre méthode que j'ai utilisée et qui a fonctionné avec succès avec Epiphany (un navigateur WebKit pour GNOME) consiste à stocker un préfixe généré aléatoirement en état de session (ou un champ caché, je me trouvais avoir une variable appropriée dans l'état de session déjà), et utilisez-la pour modifier le nom des champs. Epiphany veut toujours enregistrer le mot de passe, mais en revenant au formulaire, il ne remplira pas les champs.
la source
Je n'ai eu aucun problème en utilisant cette méthode:
Utilisez autocomplete = "off", ajoutez un champ de mot de passe caché puis un autre non caché. Le navigateur essaie de compléter automatiquement celui caché s'il ne respecte pas autocomplete = "off"
la source
Une autre solution consiste à faire le POST en utilisant un formulaire caché où toutes les entrées sont de type caché. Le formulaire visible utilisera une entrée de type "mot de passe". Ce dernier formulaire ne sera jamais soumis et le navigateur ne peut donc pas intercepter du tout l'opération de connexion.
la source