Zatrzymaj LastPass wypełnianie formularza


130

Czy istnieje sposób, aby zapobiec wypełnianiu przez rozszerzenie przeglądarki LastPass formularza HTML z polem wejściowym o nazwie „nazwa użytkownika”?

To jest ukryte pole, więc nie chcę, aby żadne oprogramowanie wykorzystywało to pole do swoich celów:

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

Rozwiązanie nie powinno przypominać „zmień nazwę pola wejściowego”.


12
Jeśli pole jest ukryte, lepiej ustawić je type="hidden"zamiast ukrywać za pomocą CSS
Reeno

2
wygląda na to, że zaakceptowałeś złą odpowiedź, ponieważ nie działa ... to, co zasugerował Alexander, działa, więc możesz zmienić wybór;)
Dominique

2
super proste $(':input').attr('data-lpignore', true);To wszystko. Spowoduje to wypełnienie formularzy lastpass na wszystkich formularzach.
Adarsh ​​Madrecha,

Odpowiedzi:


170

Dodawanie

data-lpignore="true"

do pola wprowadzania danych wyłączało dla mnie szare pole LastPass [...].

Pochodzi z LastPass.com


5
To powinna być prawidłowa odpowiedź. Wydaje się, że LP szanuje ten atrybut i nie wymaga żadnych zwariowanych „wyszukiwań” nazw, identyfikatorów czy ról.
Corneliu

28
to tylko usuwa szarą ikonę, ale nie zatrzymuje LastPass, aby zignorować autouzupełnianie danych wejściowych
Arnis Juraga

26
NIE powinna to być akceptowana odpowiedź, ponieważ NIE oznacza to „Zatrzymaj LastPass wypełnianie formularza”
Conrad Warhol

3
Zgodnie z linkiem podanym w odpowiedzi ( lastpass.com/support.php?cmd=showfaq&id=10512 ), LP zapobiega tylko wyświetlaniu ikony na tym polu
Kunal

47

Muszą być spełnione dwa warunki:

  1. Formą (nie elementu) musi posiadać autocomplete="off"cechę
  2. Użytkownik Lastpass musi mieć włączoną tę opcję: Settings > Advanced > Allow pages to disable autofill

Więc to zależy zarówno od użytkownika, jak i programisty.


39

Udało mi się mieć słowo „-search-” w identyfikatorze formularza, coś w rodzaju <form id="affiliate-search-form">- i lastpass nie dodaje swoich elementów do danych wejściowych formularza. Działa z czymś prostszym, <form id="search">ale nie działa<form id="se1rch">


8
Jest również pomijane, jeśli: - jeśli nazwa pola lub atrybut klasy zawiera słowa „szukaj” lub „srch” - jeśli identyfikator formularza lub atrybut nazwy zawiera słowo „szukaj” - atrybut roli formularza to „szukaj”
e1v

1
Niestety nie działa to w przypadku pól haseł. W efekcie formularz jest nadal wypełniany automatycznie. W moim przypadku dodanie searchjako klasy zarówno nazwy użytkownika, jak i hasła wyłączyło przycisk gwiazdki w polu nazwy użytkownika, ale pole hasła pozostało bez zmian.
Mike Rockétt

2
Tak, mogę potwierdzić, że podczas korzystania z tej metody pola hasła są nadal wypełnione. :-(
Simon East

7
Nie dotyczy to już aktualnych wersji Lastpass. Więc ta odpowiedź powinna zostać usunięta.
Heroselohim

4
Dodaj -search- do identyfikatora pojedynczego pola wejściowego działa dla mnie w Chrome 51, LastPass 4.1.17. Dodanie go do formularza nie pomaga.
Alex2php

18

Wiem, że spóźniłem się na imprezę tutaj, ale znalazłem to, kiedy próbowałem powstrzymać Lastpass przed zniszczeniem moich formularzy. @takeshin ma rację, ponieważ autouzupełnianie nie wystarczy. Skończyło się na tym, że zrobiłem hack poniżej, aby ukryć symbol. Niezbyt ładne, ale pozbyłem się ikony.

Jeśli czytają to jacyś programiści lastpass, podaj nam atrybut do użycia, abyśmy nie musieli uciekać się do takich rzeczy.

form[autocomplete="off"] input[type="text"] {
    background-position: 150% 50% !important;
}

2
Jest to jedyne rozwiązanie, które działało dla mnie (nawet podczas grania z ustawieniami lastpass, których i tak nie oczekuję od mojego użytkownika), chociaż powoduje to konflikt ze mną ustawieniem własnego background-imagew polach wejściowych (lubię wstawiać „wyczyść przyciski”na polach wejściowych) - w takim przypadku co również pracował dla mnie było po prostu ustawienie background-imagei background-positionze !importantprzesłonić LastPass stylu wbudowanego.
Guss,

Bardzo kreatywne myślenie! Dzięki za to!
Howard

18

Myślę, że lastpass honoruje autocomplete="off"atrybut dla danych wejściowych, ale nie jestem pewien w 100%.

EDYTUJ Jak inni zauważyli. działa to tylko wtedy, gdy użytkownik skonfigurował ostatnie przejście, aby to honorować.



12
Mogę potwierdzić, że lastpass nie honoruje autocomplete="off"na poziomie formularza. To tylko zmarnowało mi godzinę na tworzenie formularza „edytuj użytkownika”, który wyświetlał niewłaściwy adres e-mail. Preferencje lastpass mają opcję „nie nadpisuj pól, które są już wypełnione”, co bardzo pomaga.
Jason

7
Jak stwierdził Marco, musisz aktywować to zachowanie. Preferencje-> Zaawansowane-> Respect AutoComplete = off: zezwalaj witrynom na wyłączanie automatycznego wypełniania
Dan

jak ominąć to w lastpass?
Crash893

14

Dla mnie pracował albo type=searchco jest równe textlub używanerole=note .

Możesz sprawdzić LastPass-JavaScript, ale jest ogromny, być może znajdziesz tam obejście, z tego, co widziałem, sprawdzają tylko typy danych wejściowych 4, więc input type=searchbyłoby jedno obejście:

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

Są to również słowa kluczowe, rolektóre wydają się ignorować:

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":`

Sprawdziłem LastPass ' onloadwff.js, przygotuj się na 26.960 linii kodu :)


5
Wypróbowałem wszystkie powyższe odpowiedzi i type=searchjest to jedyna rzecz, która działa dla mnie.
Ryan King

1
+1, wydaje się, że użycie type=searchjest jedynym sposobem, aby zapobiec autouzupełnianiu, niezależnie od stanu ustawienia LastPass „Respect autocomplete = off”.
johnnyRose

Próbowano dodać role="note"lub type="search". Żaden nie działał na najnowszym Chrome i najnowszym lastpassie.
Nikita 웃

Wygląda na lpignoreto, że znowu działa, https://jsfiddle.net/78z0L1sa/3/
baw się przy

OMG, to jest denerwujące, LastPass konwertował moje pole hasła type = text na type = password i na tym konkretnym ekranie wymagane było wyświetlenie hasła, a następnie LastPass dodał hasło do witryny, a nie poprawne hasło bez wiedzy użytkownika, kiedy je zapisał zmieniał poświadczenia i przerywał ich połączenia z innymi systemami. Lpignore usunął tylko ikonę, pozostałe rozwiązania wymagały interakcji użytkownika, co nie jest idealne. Wreszcie zmiana typu wyszukiwania zadziałała; chociaż nienawidzę tego robić z powodu oprogramowania innej osoby. W każdym razie, zagłosuj za tym.
Jason Martin,

10

Dodaj „szukaj”, aby wprowadzić identyfikator

<input type="text" name="user" id="user-search"/>

1
U mnie działa dobrze. Przetestowano w najnowszej wersji Chrome. To trochę hack, ale nie tak potencjalnie zepsuty jak inne, więc pójdę na to.
Tedd Hansen,

6

Trochę za późno na imprezę, ale właśnie to osiągnąłem, modyfikując formularz za pomocą:

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

Myślę, że ten głupiec jako ostatni przechodzi do myślenia, że ​​to formularz wyszukiwania. Jednak nie działa to w przypadku pól z hasłami! Lastpass ignoruje w tym przypadku pole nazwy.

Jedynym sposobem, w jaki udało mi się to zrobić, jest dodanie następującego bezpośrednio u góry formularza:

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

Powoduje nieprzyjemne migotanie, ale usuwa bzdury z autouzupełnianiem - chociaż nadal wyświetla widżet „generuj hasło”. LastPass czeka, aż domready, a następnie sprawdza, czy są jakieś widoczne pola z hasłami, więc nie można ukryć ani zmniejszyć pól próbnych powyżej.


5

W przypadku ostatniego błędnego wydania Lastpass z października 2019 r. Ta prosta poprawka wydaje się najlepsza.

Dodaj

type="search"

do twojego wkładu.

Procedura lastpass sprawdza typeatrybut, aby określić, co zrobić z jego autouzupełnianiem, i nie robi nic w tym html5 type„wyszukiwania”. Jasne, że jest to lekko hakerskie, ale jest to zmiana w jednym wierszu, którą można łatwo usunąć, gdy naprawią błędny skrypt.

Uwaga: po wykonaniu tej czynności wprowadzone przez niektóre przeglądarki mogą wyglądać inaczej, jeśli rozpoznają rozszerzenie type atrybut. Jeśli obserwować tego, można temu zapobiec poprzez ustawienie właściwości CSS konkretnej przeglądarki -webkit-appearancei -moz-appearancedo 'none'na wejściu.


4

Ten kod w stylu ES6 był dla mnie pomocny, ponieważ dodał data-lpignore do wszystkich moich kontrolek wejściowych:

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

Aby uzyskać dostęp do określonej kontrolki INPUT, można napisać coś takiego:

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

Możesz też zrobić to według nazwy klasy:

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

1

Żadna z opcji tutaj (autouzupełnianie, data-lpignore itp.) Nie uniemożliwiała niestety automatycznego wypełniania moich pól formularza przez LastPass. Podjąłem się do problemu bardziej młotkiem i namezamiast tego asynchronicznie ustawiłem atrybuty wejściowe za pomocą JavaScript. Następująca funkcja zależna od jQuery (wywoływana z modułu obsługi zdarzenia onsubmit formularza) załatwiła sprawę:

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);

W formularzu po prostu użyłem tmp-nameatrybutów zamiast równoważnych nameatrybutów. Przykład:

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

Aktualizacja 2019-03-20

Nadal napotykałem trudności z powyższym ze względu na AngularJS w zależności od pól formularza posiadających nameatrybuty, aby ngMessages poprawnie przedstawiało komunikaty o błędach walidacji pól.

Ostatecznie jedynym rozwiązaniem, które udało mi się znaleźć, aby zapobiec wypełnianiu pól hasła LastPass w moim formularzu zmiany hasła, było:

  1. Unikaj używania input[type=password]całkowicie AND
  2. nie ma „hasła” w nazwie pola

Ponieważ w moim przypadku muszę mieć możliwość normalnego przesłania formularza, nadal korzystałem z mojego oryginalnego rozwiązania, aby zaktualizować nazwy pól „na czas”. Aby uniknąć korzystania z pól wprowadzania hasła, okazało się, że to rozwiązanie działa bardzo dobrze.


0

Próbowałem -search rename, ale z jakiegoś powodu nie zadziałało. Dla mnie zadziałało:

  1. oznacz formularz do autouzupełniania - autocomplete = "off"
  2. zmienić typ pola formularza na tekst
  3. dodaj nową klasę do swojego css, aby zamaskować dane wejściowe, symuluje pole hasła
  4. css bit: input.masker {-webkit-text-security: disc; }

Wypróbowane i przetestowane w najnowszych wersjach FF i Chrome.


0

Oto, co zadziałało, aby zapobiec wypełnianiu przez lastpass brzytwy @ Html.EditorFor box w Chrome:

Kliknij aktywną ikonę LastPass na pasku narzędzi, a następnie przejdź do Opcje konta> Preferencje rozszerzeń.

Na tym ekranie zaznacz opcję „Nie zastępuj pól, które są już wypełnione” (na dole)

Następnie kliknij „zaawansowane” po lewej stronie.

Na tym ekranie zaznacz „Respect AutoComplete = off: zezwól witrynom na wyłączanie autouzupełniania”.

Nie musiałem robić nic specjalnego w moim formularzu cshtml ASP, ale miałem wartość domyślną w formularzu dla pola @ Html.EditorFor.

Mam nadzieję, że to pomoże i zadziała dla kogoś. Nie mogłem znaleźć żadnej pomocy specyficznej dla Razor na ten problem w Internecie, więc pomyślałem, że dodam to, ponieważ odkryłem to za pomocą powyższego linku i wkładów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.