Comment désactivez-vous autocomplete
dans les principaux navigateurs pour un input
(ou form field
) spécifique ?
html
forms
browser
autocomplete
Brett Veenstra
la source
la source
Réponses:
Firefox 30 ignore les
autocomplete="off"
mots de passe, optant plutôt pour demander à l'utilisateur si le mot de passe doit être stocké sur le client. Notez le commentaire suivant du 5 mai 2014:Selon la documentation de Mozilla Developer Network , l'attribut d'élément de formulaire booléen
autocomplete
empêche la mise en cache des données de formulaire dans les anciens navigateurs.la source
De plus
autocomplete=off
, vous pouvez également faire en sorte que les noms de vos champs de formulaire soient randomisés par le code qui génère la page, peut-être en ajoutant une chaîne spécifique à la session à la fin des noms.Lorsque le formulaire est soumis, vous pouvez retirer cette partie avant de la traiter côté serveur. Cela empêcherait le navigateur Web de trouver le contexte de votre champ et pourrait également empêcher les attaques XSRF car un attaquant ne pourrait pas deviner les noms de champ pour une soumission de formulaire.
la source
$_SESSION['codefield_name'] = md5(uniqid('auth', true));
La plupart des principaux navigateurs et gestionnaires de mots de passe (correctement, à mon humble avis) ignorent maintenant
autocomplete=off
.Pourquoi? De nombreuses banques et autres sites Web de «haute sécurité» ont été ajoutés
autocomplete=off
à leurs pages de connexion «à des fins de sécurité», mais cela diminue en fait la sécurité car cela permet aux gens de changer les mots de passe sur ces sites à haute sécurité pour être faciles à mémoriser (et donc à casser) depuis la saisie semi-automatique a été cassé.Il y a longtemps, la plupart des gestionnaires de mots de passe ont commencé à ignorer
autocomplete=off
, et maintenant les navigateurs commencent à faire de même pour les entrées de nom d'utilisateur / mot de passe uniquement.Malheureusement, des bogues dans les implémentations de saisie semi-automatique insèrent des informations de nom d'utilisateur et / ou de mot de passe dans des champs de formulaire inappropriés, provoquant des erreurs de validation de formulaire, ou pire encore, insérant accidentellement des noms d'utilisateur dans des champs qui ont été intentionnellement laissés vides par l'utilisateur.
Que doit faire un développeur web?
Chrome 34, malheureusement, essaiera de remplir automatiquement les champs avec user / pass chaque fois qu'il verra un champ de mot de passe. C'est un assez mauvais bug qui, espérons-le, changera le comportement de Safari. Cependant, l'ajout de cela en haut de votre formulaire semble désactiver la saisie automatique du mot de passe:
Je n'ai pas encore étudié en détail IE ou Firefox, mais je serai heureux de mettre à jour la réponse si d'autres ont des informations dans les commentaires.
la source
type='password'
champs sur la même page a entraîné l'ignorance de la saisie semi-automatique du «mot de passe» du navigateur, ce qui était tout à fait logique car les formulaires d'inscription ont tendance à demander le mot de passe deux fois alors que les formulaires de connexion ne le demandent qu'une seule fois.Parfois, même la saisie semi-automatique = off n'empêcherait pas de remplir les informations d'identification dans des champs incorrects, mais pas le champ utilisateur ou surnom.
Cette solution de contournement s'ajoute à la publication d'Apinstein sur le comportement du navigateur.
correction du remplissage automatique du navigateur en lecture seule et mise en écriture sur le focus (clic et onglet)
Mise à jour: Mobile Safari place le curseur dans le champ, mais n'affiche pas le clavier virtuel. Le nouveau correctif fonctionne comme avant mais gère le clavier virtuel:
Démo en direct https://jsfiddle.net/danielsuess/n0scguv6/
// UpdateEnd
Parce que le navigateur remplit automatiquement les informations d'identification dans un champ de texte incorrect!?
Je remarque ce comportement étrange sur Chrome et Safari, quand il y a des champs de mot de passe sous la même forme. Je suppose que le navigateur recherche un champ de mot de passe pour insérer vos informations d'identification enregistrées. Ensuite, il remplit automatiquement (juste en devinant en raison d'une observation) le champ de saisie de texte le plus proche, qui apparaît avant le champ de mot de passe dans DOM. Comme le navigateur est la dernière instance et que vous ne pouvez pas le contrôler,
Cette correction en lecture seule ci-dessus a fonctionné pour moi.
la source
readonly
est supprimé, la sélection ultérieure du champ entraîne le retour de la saisie semi-automatique.Cela fonctionnera dans Internet Explorer et Mozilla FireFox, l'inconvénient est qu'il n'est pas standard XHTML.
la source
input type="password"
. Espérons qu'aucun autre navigateur ne choisisse de supprimer cette fonctionnalité.autocomplete="off"
sur leform
est la seule chose qui a fonctionné pour Chrome.La solution pour Chrome consiste à ajouter
autocomplete="new-password"
au mot de passe du type d'entrée. Veuillez vérifier l'exemple ci-dessous.Exemple:
Chrome remplit toujours automatiquement les données s'il trouve une boîte de type mot de passe , juste assez pour indiquer cette boîte
autocomplete = "new-password"
.Remarque: assurez-vous
F12
que vos modifications prennent effet, plusieurs fois les navigateurs enregistrent la page en cache, cela m'a donné une mauvaise impression que cela ne fonctionnait pas, mais le navigateur n'a pas réellement apporté les modifications.la source
Comme d’autres l’ont dit, la réponse est
autocomplete="off"
Cependant, je pense qu'il vaut la peine d'indiquer pourquoi c'est une bonne idée de l'utiliser dans certains cas, car certaines réponses à cette question et des questions en double ont suggéré qu'il est préférable de ne pas la désactiver.
L'arrêt des navigateurs stockant des numéros de carte de crédit ne doit pas être laissé aux utilisateurs. Trop d'utilisateurs ne réaliseront même pas que c'est un problème.
Il est particulièrement important de le désactiver dans les champs des codes de sécurité des cartes de crédit. Comme l'indique cette page :
Le problème est que s'il s'agit d'un ordinateur public (cybercafé, bibliothèque, etc.), il est alors facile pour les autres utilisateurs de voler les détails de votre carte, et même sur votre propre machine, un site Web malveillant pourrait voler des données de saisie semi-automatique .
la source
J'ai résolu le combat sans fin avec Google Chrome avec l'utilisation de caractères aléatoires. Lorsque vous effectuez toujours un rendu de saisie semi-automatique avec une chaîne aléatoire, il ne se souviendra de rien.
J'espère que cela aidera d'autres personnes.
la source
autocompleteoff
classe au champ de saisie souhaité.Je dois mendier pour différer avec ces réponses qui disent d'éviter de désactiver la saisie semi-automatique.
La première chose à signaler est que la saisie semi-automatique n'étant pas explicitement désactivée dans les champs du formulaire de connexion est un échec PCI-DSS. De plus, si la machine locale d'un utilisateur est compromise, toutes les données de saisie semi-automatique peuvent être obtenues de manière triviale par un attaquant car elles sont stockées en clair.
Il y a certainement un argument en faveur de l'utilisabilité, mais il y a un très bon équilibre quand il s'agit de savoir quels champs du formulaire doivent avoir la saisie semi-automatique désactivée et lesquels ne doivent pas.
la source
Trois options: Première:
Seconde:
Troisième (code javascript):
la source
Sur un sujet apparenté ou en fait, sur une note complètement opposée -
la source
Nous avons effectivement utilisé l 'idée de sasb pour un site. C'était une application Web de logiciel médical pour gérer le cabinet d'un médecin. Cependant, beaucoup de nos clients étaient des chirurgiens qui utilisaient de nombreux postes de travail différents, y compris des terminaux semi-publics. Ainsi, ils voulaient s'assurer qu'un médecin qui ne comprend pas l'implication des mots de passe enregistrés automatiquement ou qui n'y prête pas attention ne peut pas accidentellement laisser ses informations de connexion facilement accessibles. Bien sûr, c'était avant l'idée de la navigation privée qui commence à apparaître dans IE8, FF3.1, etc. Néanmoins, de nombreux médecins sont obligés d'utiliser des navigateurs de la vieille école dans les hôpitaux avec des TI qui ne changeront pas.
Nous avons donc eu la page de connexion générer des noms de champs aléatoires qui ne fonctionneraient que pour cette publication. Oui, c'est moins pratique, mais cela ne fait que frapper la tête de l'utilisateur de ne pas stocker les informations de connexion sur les terminaux publics.
la source
Aucune des solutions n'a fonctionné pour moi dans cette conversation.
J'ai finalement trouvé une solution HTML pure qui ne nécessite pas de Javascript , fonctionne dans les navigateurs modernes (sauf IE; il fallait au moins 1 capture, non?), Et ne vous oblige pas à désactiver la saisie semi-automatique pour l'ensemble du formulaire.
Désactivez simplement la saisie semi-automatique sur le
form
, puis activez-le pour toutinput
ce que vous souhaitez qu'il fonctionne dans le formulaire. Par exemple:la source
Réglez juste
autocomplete="off"
. Il y a une très bonne raison à cela: vous voulez fournir votre propre fonctionnalité de saisie semi-automatique!la source
J'ai essayé des solutions sans fin, puis j'ai trouvé ceci:
Au lieu d'
autocomplete="off"
utiliser simplementautocomplete="false"
Aussi simple que cela, et cela fonctionne aussi comme un charme dans Google Chrome!
la source
Cela fonctionne pour moi.
Nous pouvons également utiliser cette stratégie dans d'autres contrôles comme le texte, sélectionnez etc.
la source
Je pense que
autocomplete=off
c'est pris en charge dans HTML 5.Demandez-vous cependant pourquoi vous voulez faire cela - cela peut avoir du sens dans certaines situations, mais ne le faites pas uniquement pour le faire.
C'est moins pratique pour les utilisateurs et ce n'est même pas un problème de sécurité sous OS X (mentionné par Soren ci-dessous). Si vous craignez que des personnes se voient voler leur mot de passe à distance - un enregistreur de frappe peut toujours le faire même si votre application l'utilise
autcomplete=off
.En tant qu'utilisateur qui choisit d'avoir un navigateur se souvient (la plupart) de mes informations, je trouverais ennuyeux si votre site ne se souvenait pas des miennes.
la source
pour les entrées que vous ne voulez pas de se rappeler des données de formulaire (
username
,password
, etc.) comme indiqué ci - dessous:J'espère que cela t'aides.
la source
$(document).on('focus', 'input:password[readonly="readonly"]', function () { $(this).prop('readonly', false).blur().focus(); });
onfocusout="this.setAttribute('readonly', 'readonly');"
La meilleure solution:
Empêcher le nom d'utilisateur (ou e-mail) et le mot de passe de saisie semi-automatique:
Empêcher la saisie semi-automatique d'un champ:
Explication:
autocomplete
continue de fonctionner dans<input>
,autocomplete="off"
ne fonctionne pas, mais vous pouvez passeroff
à une chaîne aléatoire, commenope
.Travaille dans:
Chrome: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 et 64
Firefox: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 et 58
la source
autocomplete
attribut et il affiche toujours les entrées précédentes sous forme de suggestions de saisie semi-automatique sous l'entrée.autocomplete
, je reçois toujours une liste déroulante de suggestions basée sur les valeurs entrées précédemment. C'est bien sur le bureau, mais pas sur Android Chrome.Un peu tard pour le jeu ... mais je suis juste tombé sur ce problème et j'ai essayé plusieurs échecs, mais celui-ci fonctionne pour moi trouvé sur MDN
la source
Ajout du
autocomplete="off"
à la balise de formulaire désactivera la saisie semi-automatique du navigateur (ce qui a été précédemment tapé dans ce champ) de tous les
input
champs de ce formulaire particulier.Testé sur:
la source
L'ajout
autocomplete="off"
ne va pas le couper.Remplacez l'attribut de type d'entrée par
type="search"
.Google n'applique pas le remplissage automatique aux entrées avec un type de recherche.
la source
Utilisez un nom et un identifiant non standard pour les champs, donc plutôt que "nom", ayez "nom_". Les navigateurs ne le verront alors pas comme étant le champ du nom. La meilleure partie à ce sujet est que vous pouvez le faire pour certains mais pas tous les champs et il remplira automatiquement certains mais pas tous les champs.
la source
Afin d'éviter le XHTML non valide, vous pouvez définir cet attribut à l'aide de javascript. Exemple utilisant jQuery:
Le problème est que les utilisateurs sans javascript obtiendront la fonctionnalité de saisie semi-automatique.
la source
essayez-les aussi si
autocomplete="off"
cela ne fonctionne pas:la source
Je ne peux pas croire que c'est toujours un problème si longtemps après qu'il a été signalé. Les solutions ci-dessus n'ont pas fonctionné pour moi, car safari semblait savoir quand l'élément n'était pas affiché ou hors écran, mais les suivantes ont fonctionné pour moi:
J'espère que c'est utile pour quelqu'un!
la source
Voici donc:
la source
Il s'agit d'un problème de sécurité que les navigateurs ignorent maintenant. Les navigateurs identifient et stockent le contenu à l'aide de noms d'entrée, même si les développeurs considèrent que les informations sont sensibles et ne doivent pas être stockées. Faire un nom d'entrée différent entre 2 requêtes résoudra le problème (mais sera toujours enregistré dans le cache du navigateur et augmentera également le cache du navigateur). Demander à l'utilisateur d'activer ou de désactiver des options dans les paramètres de son navigateur n'est pas une bonne solution. Le problème peut être résolu dans le backend.
Voici ma solution. Une approche que j'ai mise en place dans mon cadre. Tous les éléments de saisie semi-automatique sont générés avec une entrée cachée comme celle-ci:
Le serveur traite ensuite les variables de publication comme ceci:
La valeur est accessible comme d'habitude
Et le navigateur ne sera pas en mesure de suggérer des informations de la demande précédente ou des utilisateurs précédents.
Tout fonctionne comme un charme, même si les navigateurs se mettent à jour, veulent ignorer la saisie semi-automatique ou non. Cela a été la meilleure façon de résoudre le problème pour moi.
la source
Aucun des hacks mentionnés ici n'a fonctionné pour moi dans Chrome. Il y a une discussion du problème ici: https://code.google.com/p/chromium/issues/detail?id=468153#c41
Ajout de cela à l'intérieur d'une
<form>
œuvre (au moins pour l'instant):la source
maxlength="0"
empêche Firefox de remplir automatiquement le champ.Vous pouvez utiliser en entrée.
Par exemple;
la source