3232 votes

Comment désactiver l'autocomplétion du navigateur sur les champs de formulaire web / les balises de saisie ?

Comment désactiver la saisie semi-automatique dans les principaux navigateurs pour une entrée (ou un champ de formulaire) spécifique ?

5 votes

Dans certains systèmes où les testeurs doivent saisir manuellement un grand nombre d'informations à plusieurs reprises, il pourrait être utile de configurer l'option de manière à ce que, lors des tests, vous puissiez la désactiver et vous contenter d'appuyer sur "tabulation > flèche vers le bas > tabulation > flèche vers le bas, etc...".

0 votes

Essayer github.com/terrylinooo/disableautofill.js Il utilise JavaScript pour ignorer la fonction de remplissage automatique du navigateur.

4 votes

Cette question est débattue sur méta .

2894voto

nlucaroni Points 21502

Firefox 30 ignore autocomplete="off" pour les mots de passe, en choisissant plutôt de demander à l'utilisateur si le mot de passe doit être stocké sur le client. Il convient de noter ce qui suit commentaire du 5 mai 2014 :

  • Le gestionnaire de mots de passe toujours demande s'il souhaite enregistrer un mot de passe. Les mots de passe ne sont pas enregistrés sans l'autorisation de l'utilisateur.
  • Nous sommes le troisième navigateur à mettre en œuvre ce changement, après IE et Chrome.

Selon la Réseau des développeurs Mozilla Dans la documentation, l'attribut booléen de l'élément de formulaire autocomplete empêche la mise en cache des données du formulaire dans les anciens navigateurs.

<input type="text" name="foo" autocomplete="off" />

55 votes

Cela n'a pas fonctionné pour moi dans Firefox 3.0.3. J'ai dû mettre l'attribut autocomplete dans le FORM plutôt que dans l'INPUT.

23 votes

L'autocomplétion n'est définie que dans les normes HTML 5, ce qui signifie qu'elle ne pourra pas être validée par rapport à HTML 4.*...

110 votes

@Winston, vous devriez le mettre à la fois sur le formulaire, ET sur l'élément d'entrée lui-même. De cette façon, vous couvrirez tous les problèmes de non-standardisation des navigateurs.

376voto

Ben Combee Points 7193

En plus de la définition des autocomplete=off Vous pouvez également faire en sorte que les noms des champs de votre formulaire soient randomisés par le code qui génère la page, par exemple en ajoutant une chaîne spécifique à la session à la fin des noms.

Lorsque le formulaire est soumis, vous pouvez supprimer cette partie avant de les traiter côté serveur. Cela empêcherait le navigateur web de trouver un contexte pour votre champ et pourrait également aider à prévenir les attaques XSRF, car un attaquant ne serait pas en mesure de deviner les noms des champs pour la soumission d'un formulaire.

13 votes

C'est une bien meilleure solution que d'utiliser autocomplete="off". Tout ce que vous avez à faire est de générer un nouveau nom à chaque chargement de page et de sauvegarder ce nom dans un $_SESSION pour une utilisation future : $_SESSION['codefield_name'] = md5(uniqid('auth', true));

97 votes

Non, ce n'est pas une meilleure solution, car l'origine de la préférence pour ce paramètre est l'agent utilisateur, également connu sous le nom de navigateur web. Il y a une différence entre soutenir un certain comportement (ce que HTML 5 tente de faire) et l'imposer en décidant au nom de l'utilisateur, ce que vous suggérez comme étant une "bien meilleure solution".

19 votes

Cette solution peut fonctionner avec tous les navigateurs, elle est donc "meilleure" à cet égard. Néanmoins, amn a raison, décider de désactiver la saisie semi-automatique au nom de vos utilisateurs n'est pas une bonne idée. Cela signifie que je ne désactiverais la saisie semi-automatique que dans des situations très spécifiques, par exemple lorsque vous prévoyez de créer votre propre fonctionnalité de saisie semi-automatique et que vous ne voulez pas de conflits ou de comportements étranges.

291voto

apinstein Points 1401

La plupart des grands navigateurs et des gestionnaires de mots de passe ignorent désormais (à juste titre, IMHO) autocomplete=off .

Pourquoi ? De nombreuses banques et d'autres sites web "hautement sécurisés" ont ajouté autocomplete=off à leurs pages de connexion "à des fins de sécurité", mais cela diminue en fait la sécurité car les gens modifient les mots de passe de ces sites hautement sécurisés pour qu'ils soient faciles à retenir (et donc à craquer) puisque l'autocomplétion a été rompue.

Il y a longtemps que 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 l'autocomplétion insèrent des informations sur le nom d'utilisateur et/ou le 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 laissés intentionnellement vides par l'utilisateur.

Que doit faire un développeur web ?

  • Si vous pouvez conserver tous les champs de mot de passe sur une page distincte, c'est un bon début, car il semble que la présence d'un champ de mot de passe soit le principal déclencheur de l'autocomplétion de l'utilisateur/du mot de passe. Sinon, lisez les conseils ci-dessous.
  • Safari remarque qu'il y a 2 champs de mot de passe et désactive l'autocomplétion dans ce cas, en supposant qu'il s'agit d'un formulaire de changement de mot de passe, et non d'un formulaire de connexion. Veillez donc à utiliser deux champs de mot de passe (nouveau et confirmation du nouveau) pour tous les formulaires dans lesquels vous autorisez l'autocomplétion.
  • Cromo 34, malheureusement, essaiera de remplir automatiquement les champs avec user/pass chaque fois qu'il verra un champ avec un mot de passe. Il s'agit d'un bogue assez grave qui, espérons-le, modifiera le comportement de Safari. Cependant, le fait d'ajouter ceci en haut de votre formulaire semble désactiver le remplissage automatique du mot de passe :

    <input type="text" style="display:none">
    <input type="password" style="display:none">

Je n'ai pas encore étudié IE ou Firefox en profondeur, mais je serai heureux de mettre à jour la réponse si d'autres ont des informations dans les commentaires.

9 votes

Que voulez-vous dire par "l'ajout de ceci sur votre page semble désactiver le remplissage automatique de la page :".

9 votes

@wutzebaer, Chrome remarque le champ de mot de passe caché et arrête l'auto-complétion. Il semblerait que ce soit pour éviter que le site ne vole des informations sur le mot de passe sans que l'utilisateur s'en aperçoive.

9 votes

Votre bout de code empêche les autocomplétions pour les champs de connexion sur Chrome, Firefox, IE 8 et IE 10. Je n'ai pas testé IE 11. C'est une bonne chose ! La seule réponse simple qui fonctionne encore.

114voto

brendan Points 15097
<form name="form1" id="form1" method="post"
      autocomplete="off" action="http://www.example.com/form.cgi">

Cela fonctionnera avec Internet Explorer et Mozilla Firefox. L'inconvénient est qu'il n'est pas conforme à la norme XHTML.

0 votes

J'ai remarqué que le fait de l'ajouter à l'élément de formulaire n'empêche pas toujours de l'appliquer aux entrées individuelles du formulaire. C'est pourquoi il est probablement préférable de le placer directement sur l'élément d'entrée.

16 votes

En fait @sholsinger, il est préférable de le mettre à la fois sur le formulaire ET sur l'élément d'entrée lui-même. De cette façon, on couvre tous les problèmes de non-standardisation des navigateurs.

2 votes

Malheureusement, à partir d'IE 11, Microsoft ne respecte plus ce principe. input type="password" . Espérons qu'aucun autre navigateur ne choisira de supprimer cette fonctionnalité.

65voto

Sam Hasler Points 10253

Comme d'autres l'ont dit, la réponse est autocomplete="off" .

Toutefois, je pense qu'il est utile de préciser que pourquoi c'est une bonne idée de l'utiliser dans certains cas, car certaines réponses à cette question et questions en double ont suggéré qu'il valait mieux ne pas l'éteindre.

L'arrêt du stockage des numéros de cartes de crédit par les navigateurs ne doit pas être laissé à la discrétion des utilisateurs. Trop d'entre eux ne se rendront même pas compte du problème.

Il est particulièrement important de le désactiver pour les champs de codes de sécurité des cartes de crédit. En tant que cette page États :

"Ne jamais conserver le code de sécurité ... sa valeur dépend de la présomption que la seule façon de le fournir est de le lire sur la carte de crédit physique, ce qui prouve que la personne qui le fournit détient effectivement la carte".

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 données de votre carte, et même sur votre propre machine, un site web malveillant peut voler les données de l'autocomplétion .

7 votes

Si je me rendais sur un site et qu'il se souvenait de ma carte dans la liste déroulante, je serais très mécontent. je commencerais à me demander comment ils peuvent être aussi négligents.

10 votes

Cas beaucoup plus simple / plus critique. Lorsque je visite la page d'un utilisateur dans la partie admin de mon site, il essaie de définir son nom d'utilisateur et son mot de passe comme étant mon nom d'utilisateur et mon mot de passe d'administrateur, sans pouvoir dire qu'il ne s'agit pas d'un formulaire de connexion. Je veux que mon mot de passe administrateur soit mémorisé, mais c'est une erreur critique que d'essayer d'appliquer ce nom d'utilisateur / mot de passe mémorisé à tous les utilisateurs que je modifie ensuite.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X