Arrêtez LastPass de remplir un formulaire

130

Existe-t-il un moyen d'empêcher l'extension de navigateur LastPass de remplir un formulaire HTML avec un champ de saisie avec le nom "nom d'utilisateur"?

Ceci est un champ caché, donc je ne veux pas qu'un logiciel utilise ce champ à ses fins:

<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">

La solution ne doit pas être comme "renommer le champ de saisie".

Marco
la source
12
Si le champ est masqué, il est préférable de le définir type="hidden"au lieu de le masquer avec CSS
Reeno
2
il semble que vous ayez accepté la mauvaise réponse car cela ne fonctionne pas ... ce qu'Alexandre a suggéré fonctionne, vous voudrez peut-être changer votre sélection;)
Dominique
2
super simple c'est $(':input').attr('data-lpignore', true);tout. Cela permettra de remplir le formulaire lastpass sur tous les formulaires.
Adarsh ​​Madrecha

Réponses:

170

Ajouter

data-lpignore="true"

à un champ de saisie désactivé la case grise LastPass [...] pour moi.

Provenant de LastPass.com

whatismybrowser.com
la source
5
Cela devrait être la réponse valable. LP semble respecter cet attribut et ne nécessite aucun nom, identifiant ou rôle de recherche fou.
Corneliu
28
cela ne supprime que l'icône grise, mais n'empêche pas LastPass d'ignorer le remplissage automatique des entrées
Arnis Juraga
26
cela ne devrait PAS être la réponse acceptée car cela n'empêche PAS LastPass de remplir un formulaire
Conrad Warhol
3
Selon le lien fourni dans la réponse ( lastpass.com/support.php?cmd=showfaq&id=10512 ), LP empêche uniquement l'icône de s'afficher sur ce champ
Kunal
47

Deux conditions doivent être remplies:

  1. le formulaire (pas l'élément) doit avoir un autocomplete="off"attribut
  2. L'utilisateur Lastpass doit avoir cette option activée: Settings > Advanced > Allow pages to disable autofill

Cela dépend donc à la fois de l'utilisateur et du développeur.

prend
la source
39

Ce qui a fonctionné pour moi, c'est d'avoir le mot "-search-" dans l'identifiant du formulaire, quelque chose comme <form id="affiliate-search-form">- et lastpass n'ajoute pas ses éléments aux entrées du formulaire. Cela fonctionne avec quelque chose de plus simple comme <form id="search">mais ne fonctionne pas avec<form id="se1rch">

Alexandre Gorbatenko
la source
8
Il est également supprimé si: - si le nom de champ ou l' attribut de classe contient les mots "search" ou "srch" - si l' ID de formulaire ou l' attribut de nom contient "search" - l' attribut de rôle du formulaire est "search"
e1v
1
Malheureusement, cela ne fonctionne pas pour les champs de mot de passe. En effet, le formulaire est toujours rempli automatiquement. Dans mon cas, l'ajout en searchtant que classes à la fois au nom d'utilisateur et au mot de passe a désactivé le bouton astérisque dans le champ du nom d'utilisateur, mais le champ du mot de passe reste tel quel.
Mike Rockétt
2
Oui, je peux confirmer que les champs de mot de passe sont toujours remplis lorsque j'utilise cette approche. :-(
Simon East
7
Cela ne s'applique plus aux versions actuelles de Lastpass. Donc, cette réponse devrait être supprimée.
Heroselohim
4
Ajouter -search- à l'id d'un seul champ de saisie fonctionne pour moi sur Chrome 51, LastPass 4.1.17. L'ajouter au formulaire n'aide pas.
Alex2php
18

Je sais que je suis en retard à la fête ici, mais j'ai trouvé ça quand j'essayais d'empêcher Lastpass de ruiner mes formulaires. @takeshin a raison en ce sens que la saisie semi-automatique ne suffit pas. J'ai fini par faire le hack ci-dessous juste pour cacher le symbole. Pas joli, mais je me suis débarrassé de l'icône.

Si des développeurs lastpass lisent ceci, veuillez nous donner un attribut à utiliser, afin que nous n'ayons pas à recourir à des choses comme celles-ci.

form[autocomplete="off"] input[type="text"] {
    background-position: 150% 50% !important;
}
Jan
la source
2
C'est la seule solution qui a fonctionné pour moi (même en jouant avec les paramètres lastpass, ce que je ne m'attends pas vraiment à ce que mon utilisateur fasse de toute façon), bien que cela soit en conflit avec moi définissant le mien background-imagesur les champs de saisie (j'aime mettre "clear boutons » sur les champs d'entrée) - dans ce cas , ce qui a également travaillé pour moi se couchait background-imageet background-positionavec !importantpour remplacer le style LastPass de builtin.
Guss
Pensée très créative! Merci pour cela!
Howard
18

Je pense que lastpass honore l' autocomplete="off"attribut des entrées, mais je ne suis pas sûr à 100%.

EDIT Comme d'autres l'ont souligné. cela ne fonctionne que si l'utilisateur a configuré la dernière passe pour l'honorer.

mituw16
la source
20
Oui, mais pas par défaut: helpdesk.lastpass.com/extension-preferences/advanced
Marco
12
Je peux confirmer que lastpass n'honore pas autocomplete="off"au niveau du formulaire. Cela m'a fait perdre une heure de temps de développement sur un formulaire "modifier l'utilisateur" qui semblait afficher la mauvaise adresse e-mail. Les préférences lastpass ont une option "ne pas écraser les champs déjà remplis", ce qui aide beaucoup.
Jason
7
Comme Marco l'a indiqué, vous devez activer ce comportement. Préférences-> Avancé-> Respect de la saisie semi-automatique = désactivé: autoriser les sites Web à désactiver la saisie automatique
Dan
comment contourner cela dans lastpass?
Crash893
14

Pour moi travaillé soit type=searchce qui est un peu égal textou en utilisantrole=note .

Vous pouvez vérifier le LastPass-JavaScript mais c'est énorme, peut-être que vous pouvez trouver une solution de contournement là-bas, d'après ce que j'ai vu, ils ne vérifient que 4 types d'entrée, ce input type=searchserait donc une solution de contournement:

!c.form && ("text" == c.type || "password" == c.type || "url" == c.type || "email" == c.type) && lpIsVisible(c))

Ce sont également les rolemots - clés qu'ils semblent ignorer:

var c = b.getAttribute("role");
switch (c) {
case "navigation":
case "banner":
case "contentinfo":
case "note":
case "search":
case "seealso":
case "columnheader":
case "presentation":
case "toolbar":
case "directory":`

J'ai vérifié LastPass ' onloadwff.js, préparez-vous à 26.960 lignes de code :)

Purée de pois
la source
5
J'ai essayé toutes les réponses ci-dessus et type=searchc'est la seule chose qui fonctionne pour moi.
Ryan King
1
+1, il semble que l'utilisation type=searchsoit le seul moyen d'empêcher le remplissage automatique quel que soit l'état du paramètre LastPass "Respect autocomplete = off".
johnnyRose
J'ai essayé d'ajouter role="note"ou type="search". Aucun n'a fonctionné sur le dernier Chrome et le dernier lastpass.
Nikita 웃
il semble que le lpignorefonctionne à nouveau, https://jsfiddle.net/78z0L1sa/3/
tripotez-
OMG, c'est ennuyeux, LastPass convertissait mon champ de mot de passe type = texte en type = mot de passe et sur cet écran particulier, le mot de passe devait être vu, puis LastPass a ajouté le mot de passe du site et non le mot de passe correct sans que l'utilisateur sache quand il l'a enregistré changeait les informations d'identification et rompait leurs connexions avec d'autres systèmes. Le lpignore, n'a supprimé que l'icône, les autres solutions nécessitaient une interaction de l'utilisateur, ce qui n'est pas idéal. Enfin, changer le type de recherche a fonctionné; même si je déteste avoir à faire cela à cause du logiciel de quelqu'un d'autre. Quoi qu'il en soit, votez pour celui-ci.
Jason Martin le
10

Ajouter "recherche" à l'ID d'entrée

<input type="text" name="user" id="user-search"/>
Alex
la source
1
Fonctionne bien pour moi. Testé sur le dernier Chrome. C'est un peu un hack, mais pas aussi potentiellement cassant que les autres, alors je vais y aller.
Tedd Hansen
6

Un peu tard à la fête mais je viens juste d'y parvenir en modifiant le formulaire avec:

<form autocomplete="off" name="lastpass-disable-search">

Je suppose que ces imbéciles passent en dernier à penser que c'est un formulaire de recherche. Cela ne fonctionne cependant pas pour les champs de mot de passe! Lastpass ignore le champ de nom dans ce cas.

La seule façon dont j'ai réussi à faire cela est d'ajouter ce qui suit directement en haut du formulaire:

<form autocomplete="off">
    <div id="lp" ><input type="text" /><input type="password" /></div><script type="text/javascript">setTimeout(function(){document.getElementById('lp').style.display = 'none'},75);</script>
</form>

Il provoque un scintillement désagréable mais supprime le non-sens de la saisie automatique - bien qu'il affiche toujours le widget "générer le mot de passe". LastPass attend jusqu'à domready, puis vérifie s'il y a des champs de mot de passe visibles, il n'est donc pas possible de masquer ou de réduire les champs simulés ci-dessus.

PeteAUK
la source
5

Pour cette dernière version buggy d'octobre 2019 de Lastpass, cette solution simple semble être la meilleure.

Ajouter

type="search"

à votre entrée.

La routine lastpass vérifie l' typeattribut pour déterminer ce qu'il faut faire avec son remplissage automatique, et il ne fait rien sur ce html5type de «recherche». Bien sûr, c'est légèrement hacky, mais c'est un changement d'une ligne qui peut être facilement supprimé lorsqu'ils corrigent leur script bogué.

Remarque: Après cela, votre entrée peut apparaître différemment par certains navigateurs s'ils reprennent l' typeattribut. Si vous observez cela, vous pouvez l'empêcher de se produire en définissant les propriétés CSS spécifiques au navigateur -webkit-appearanceet -moz-appearancesur 'none'sur votre entrée.

Tony Brasunas
la source
4

Ce code de style ES6 m'a été utile car il a ajouté data-lpignore à tous mes contrôles d'entrée:

const elements = document.getElementsByTagName("INPUT");
for (let element of elements) {
    element.setAttribute("data-lpignore", "true");
}

Pour accéder à un contrôle INPUT spécifique, on pourrait écrire quelque chose comme ceci:

document.getElementById('userInput').setAttribute("data-lpignore", "true");

Ou, vous pouvez le faire par nom de classe:

const elements = document.getElementsByClassName('no-last-pass');
for (let element of elements) {
    element.setAttribute("data-lpignore", "true");
}
ccalvert
la source
1

Aucune des options ici (autocomplete, data-lpignore etc.) n'a empêché LastPass de remplir automatiquement mes champs de formulaire malheureusement. J'ai adopté une approche plus martiale du problème et défini de manière asynchrone les nameattributs d' entrée via JavaScript à la place. La fonction suivante dépendante de jQuery (appelée à partir du gestionnaire d'événements onsubmit du formulaire) a fait l'affaire:

function setInputNames() {
    $('#myForm input').each(function(idx, el) {
        el = $(el);
        if (el.attr('tmp-name')) {
            el.attr('name', el.attr('tmp-name'));
        }
    });
}

$('#myForm').submit(setInputNames);

Dans le formulaire, j'ai simplement utilisé des tmp-nameattributs à la place des nameattributs équivalents . Exemple:

<form id="myForm" method="post" action="/someUrl">
    <input name="username" type="text">
    <input tmp-name="password" type="password">
</form>

Mise à jour 2019-03-20

J'ai toujours rencontré des difficultés avec ce qui précède à cause d'AngularJS en fonction des champs de formulaire ayant des nameattributs pour que ngMessages présente correctement les messages d'erreur de validation de champ.

En fin de compte, la seule solution que j'ai pu trouver pour empêcher LastPass de remplir les champs de mot de passe sur mon formulaire de changement de mot de passe était de:

  1. Évitez d'utiliser input[type=password]entièrement, ET
  2. ne pas avoir de 'mot de passe' dans le nom du champ

Comme je dois être en mesure de soumettre le formulaire normalement dans mon cas, j'ai toujours utilisé ma solution originale pour mettre à jour les noms de champs «juste à temps». Pour éviter d'utiliser les champs de saisie de mot de passe, j'ai trouvé que cette solution fonctionnait très bien.

John Rix
la source
0

J'ai essayé le changement de nom -search mais pour une raison quelconque, cela n'a pas fonctionné. Ce qui a fonctionné pour moi est le suivant:

  1. marquer le formulaire comme saisie semi-automatique - autocomplete = "off"
  2. changer le type de saisie du champ de formulaire en texte
  3. ajoute une nouvelle classe à votre css pour masquer l'entrée, simule un champ de mot de passe
  4. bit css: input.masker {-webkit-text-security: disque; }

Essayé et testé dans les dernières versions de FF et Chrome.

Louis Ferreira
la source
0

Voici ce qui a fonctionné pour moi pour empêcher lastpass de remplir une boîte de rasoir @ Html.EditorFor dans Chrome:

Cliquez sur l'icône LastPass active dans votre barre d'outils, puis allez dans Options du compte> Préférences d'extension.

Sur cet écran, cochez "Ne pas écraser les champs déjà remplis" (en bas)

Ensuite, cliquez sur "avancé" sur la gauche.

Sur cet écran, cochez "Respecter la saisie semi-automatique = désactivé: autoriser les sites Web à désactiver la saisie automatique".

Je n'avais pas besoin de faire quoi que ce soit de spécial dans mon formulaire ASP cshtml mais j'avais une valeur par défaut dans le formulaire pour la boîte @ Html.EditorFor.

J'espère que cela aide et fonctionne pour quelqu'un. Je n'ai pas trouvé d'aide spécifique à Razor sur ce problème sur le Web, alors j'ai pensé ajouter ceci puisque je l'ai compris à l'aide du lien et des contributions ci-dessus.

Doug
la source