Wyłącz funkcję "Zapisz hasło" przeglądarki

Jedną z radości z pracy dla rządowej agencji opieki zdrowotnej jest poradzenie sobie z całą paranoją wokół czynienia z Phi (Protected Health Information). Nie zrozum mnie źle, jestem za robieniem wszystkiego, co możliwe, aby chronić dane osobowe ludzi (zdrowie, finanse, nawyki surfowania itp.), ale czasami ludzie stają się trochę zbyt nerwowi.

Przykład: jeden z naszych państwowych klientów niedawno dowiedział się, że przeglądarka zapewnia przydatną funkcję do zapisywania Twoje hasło. Wszyscy wiemy,że istnieje od jakiegoś czasu i jest całkowicie opcjonalny i to do użytkownika końcowego należy decyzja, czy jest to mądra decyzja, czy nie. Jednak w tej chwili jest trochę zamieszania i jesteśmy żądani, aby znaleźć sposób, aby wyłączyć tę funkcjonalność na naszej stronie.

Pytanie: czy istnieje sposób, aby Strona informowała przeglądarkę, aby nie oferowała zapamiętywania haseł? Od dawna zajmuję się tworzeniem stron internetowych, ale nie wiem czy mam natknąłem się na to wcześniej.

Każda pomoc jest mile widziana.

Author: ulidtko, 2008-08-28

30 answers

Nie jestem pewien, czy będzie działać we wszystkich przeglądarkach, ale powinieneś spróbować ustawić autocomplete = " off " w formularzu.

<form id="loginForm" action="login.cgi" method="post" autocomplete="off">

Najprostszym i najprostszym sposobem wyłączenia formularza i monitów dotyczących przechowywania hasła i uniemożliwienia buforowania danych formularza w historii sesji jest użycie atrybutu autouzupełniania formularza o wartości "off".

Od https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

Niektóre drobne badania pokazują, że to działa w IE to ale nie zostawię żadnych gwarancji;)

@Joseph: jeśli jest to ścisły wymóg, aby przejść walidację XHTML z faktycznym znacznikiem (Nie wiem, dlaczego to miałoby być), Możesz teoretycznie dodać ten atrybut z javascript później, ale wtedy użytkownicy z wyłączonym js (prawdopodobnie zaniedbana ilość twoja baza użytkowników lub zero, jeśli Twoja witryna wymaga js) nadal będą miały zapisane hasła.

Przykład z jQuery:

$('#loginForm').attr('autocomplete', 'off');
 325
Author: Markus Olsson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-09 17:24:44

Oprócz

autocomplete="off"

Użyj

readonly onfocus="this.removeAttribute('readonly');"

Dla wejść, których nie chcesz, aby zapamiętały dane formularza (username, password, itd.) jak pokazano poniżej:

<input type="text" name="UserName" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

<input type="password" name="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

Testowane na najnowszych wersjach głównych przeglądarek tj. Google Chrome, Mozilla Firefox, Microsoft Edge, itd. i działa jak urok. Mam nadzieję, że to pomoże.

 46
Author: Murat Yıldız,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-03 09:45:29

Zmagałem się z tym problemem jakiś czas, z wyjątkowym zwrotem w problemie. Uprzywilejowani użytkownicy nie mogli mieć zapisanych haseł, ale normalni użytkownicy tego potrzebowali. Oznaczało to, że uprzywilejowani użytkownicy musieli zalogować się dwa razy, drugi raz wymuszając brak zapisanych haseł.

Z tym wymogiem Standardowa Metoda autocomplete="off" nie działa we wszystkich przeglądarkach, ponieważ hasło mogło zostać zapisane od pierwszego logowania. Kolega znalazł rozwiązanie na zastąpienie hasła pole, gdy było skupione na polu nowego hasła, a następnie skupić się na polu nowego hasła (następnie podłączyć ten sam uchwyt zdarzenia). To zadziałało (tyle że spowodowało nieskończoną pętlę w IE6). Może było jakieś wyjście, ale to powodowało migrenę.

W końcu starałem się mieć tylko nazwę użytkownika i hasło poza formularzem. Ku mojemu zdziwieniu, to zadziałało! Działał na IE6, a obecne wersje Firefoksa i Chrome na Linuksie. Nie testowałem go dalej, ale podejrzewam, że działa w większości, jeśli nie we wszystkich przeglądarkach (ale nie zdziwiłoby mnie, gdyby istniała przeglądarka, która nie dbała o to, czy nie ma formy).

Oto przykładowy kod, wraz z jQuery, aby go uruchomić:

<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>

<form id="theForm" action="/your/login" method="post">
  <input type="hidden" id="hiddenUsername" name="username"/>
  <input type="hidden" id="hiddenPassword" name="password"/>
  <input type="submit" value="Login"/>
</form>

<script type="text/javascript" language="JavaScript">
  $("#theForm").submit(function() {
    $("#hiddenUsername").val($("#username").val());
    $("#hiddenPassword").val($("#password").val());
  });
  $("#username,#password").keypress(function(e) {
    if (e.which == 13) {
      $("#theForm").submit();
    }
  });
</script>
 37
Author: Mike Stone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-22 19:05:36

Cóż, to bardzo stary post, ale mimo to podam moje rozwiązanie, które mój zespół starał się osiągnąć od dawna. Po prostu dodaliśmy nowe pole input type = "password" wewnątrz formularza i owinęliśmy je w div I uczyniliśmy div ukrytym. Upewnij się, że ten div jest przed rzeczywistym wprowadzaniem hasła. To działało dla nas i nie dało żadnej opcji Zapisz hasło

Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview

HTML:

<form method="post" action="yoururl">
      <div class="hidden">
        <input type="password"/>
      </div>
      <input type="text" name="username" placeholder="username"/>
      <input type="password" name="password" placeholder="password"/>
    </form>

CSS:

.hidden {display:none;}
 30
Author: whyAto8,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-04 04:28:57

Możesz zapobiec dopasowywaniu formularzy przez przeglądarkę, losując nazwę używaną w polu hasła podczas każdego pokazu. Następnie przeglądarka widzi hasło do tego samego adresu url, ale nie może być pewien, że jest to to samo hasło . Może kontroluje coś innego.

Update: należy pamiętać, że powinno to być oprócz za pomocą autouzupełniania lub innych taktyk, a nie zastępowanie ich, z powodów wskazanych przez innych.

Należy również pamiętać, że będzie to tylko uniemożliwia przeglądarce automatyczne uzupełnianie hasła. Nie uniemożliwia to przechowywania hasła na dowolnym poziomie bezpieczeństwa przeglądarki zdecyduje się użyć.

 17
Author: Joel Coehoorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-08 13:08:16

Użyj prawdziwego uwierzytelniania dwuskładnikowego , aby uniknąć uzależnienia od haseł, które mogą być przechowywane w znacznie większej liczbie miejsc niż pamięć podręczna przeglądarki użytkownika.

 15
Author: David Schmitt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-27 14:08:09

Najczystszym sposobem jest użycie atrybutu znacznika autocomplete="off", ale Firefox nie przestrzega go poprawnie, gdy zmieniasz pola za pomocą Tab.

Jedynym sposobem, aby to zatrzymać, jest dodanie fałszywego ukrytego pola hasła, które zmusza przeglądarkę do wypełnienia tam hasła.

<input type="text" id="username" name="username"/>
<input type="password" id="prevent_autofill" autocomplete="off" style="display:none" tabindex="-1" />
<input type="password" id="password" autocomplete="off" name="password"/>

Jest to brzydki hack, ponieważ zmienia się zachowanie przeglądarki, co należy uznać za złą praktykę. Używaj go tylko wtedy, gdy naprawdę go potrzebujesz.

Uwaga: To skutecznie zatrzyma autouzupełnianie haseł, ponieważ FF "zapisz" wartość #prevent_autofill (która jest pusta) i spróbuje wypełnić tam zapisane hasła, ponieważ zawsze używa pierwszego wejścia type="password", które znajduje w DOM po odpowiednim wejściu "username".

 13
Author: venimus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-06 10:22:24

Przetestowałem, że dodawanie autocomplete = " off " w znaczniku formularza we wszystkich głównych przeglądarkach. W rzeczywistości większość ludzi w USA używa IE8 do tej pory.

    IE8, IE9, IE10, Firefox, Safari działają dobrze.

    Przeglądarka nie pyta "Zapisz hasło". Ponadto wcześniej zapisana nazwa użytkownika i hasło nie zostały wypełnione.

  1. Chrome i IE 11 nie obsługują funkcji autocomplete= " off "
  2. FF obsługujący autocomplete= "off". ale czasami istniejące zapisane / align = "left" / zamieszkana.

Aktualizacja: Czerwiec 11, 2014

Wreszcie, poniżej znajduje się rozwiązanie cross browser przy użyciu javascript i działa dobrze we wszystkich przeglądarkach.

Należy usunąć znacznik "formularz" w formularzu logowania. Po walidacji po stronie klienta umieść te poświadczenia w ukrytej formie i prześlij je.

Dodaj również dwie metody. jeden do walidacji " validateLogin()" i drugi do nasłuchiwania wprowadź zdarzenie, podczas gdy kliknij enter w polu tekstowym / hasło / przycisk "checkAndSubmit ()". bo teraz formularz logowania nie posiada znacznika formularza, więc nie działa tutaj enter event.

HTML

<form id="HiddenLoginForm" action="" method="post">
<input type="hidden" name="username" id="hidden_username" />
<input type="hidden" name="password" id="hidden_password" />
</form>

Username: <input type="text" name="username" id="username" onKeyPress="return checkAndSubmit(event);" /> 
Password: <input type="text" name="password" id="password" onKeyPress="return checkAndSubmit(event);" /> 
<input type="button" value="submit" onClick="return validateAndLogin();" onKeyPress="return checkAndSubmit(event);" /> 

Javascript

//For validation- you can modify as you like
function validateAndLogin(){
  var username = document.getElementById("username");
  var password = document.getElementById("password");

  if(username  && username.value == ''){
    alert("Please enter username!");
    return false;
  }

  if(password && password.value == ''){
    alert("Please enter password!");
    return false;
  }

  document.getElementById("hidden_username").value = username.value;
  document.getElementById("hidden_password").value = password.value;
  document.getElementById("HiddenLoginForm").submit();
}

//For enter event
function checkAndSubmit(e) {
 if (e.keyCode == 13) {
   validateAndLogin();
 }
}
Powodzenia!!!
 12
Author: Asik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-04 17:54:03

Nie do końca - jedyne, co można realistycznie zrobić, to zaoferować porady na stronie; Być może, przed ich pierwszym logowaniem, można pokazać im formularz z informacją, że nie jest zalecane, aby umożliwić przeglądarce przechowywanie hasła.

Następnie użytkownik natychmiast zastosuje się do porady, zapisze hasło na notce POST-it i przyklei je do swojego monitora.

 8
Author: Jason Bunting,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 14:21:19

To, co robiłem, to kombinacja autocomplete= " off " i wyczyszczenie pól haseł za pomocą javascript / jQuery.

JQuery Przykład:

$(function() { 
    $('#PasswordEdit').attr("autocomplete", "off");
    setTimeout('$("#PasswordEdit").val("");', 50); 
});

Używając setTimeout() możesz poczekać, aż przeglądarka wypełni pole, zanim je wyczyścisz, w przeciwnym razie przeglądarka będzie zawsze autouzupełniać po wyczyszczeniu pola.

 6
Author: Howard Young,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-07 11:30:03

Jeśli autocomplete = " off " nie działa...usuń znacznik formularza i użyj zamiast niego znacznika div, a następnie przekaż wartości formularza za pomocą jquery na serwer. To mi pomogło.

 3
Author: Nikhil Dinesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-04 08:59:42

Ponieważ autocomplete = " off " nie działa dla pól haseł, należy polegać na javascript. Oto proste rozwiązanie oparte na odpowiedziach znalezionych tutaj.

Dodaj atrybut data-password-autocomplete= "off"do pola hasła:

<input type="password" data-password-autocomplete="off">

Dołącz następujące JS:

$(function(){
    $('[data-password-autocomplete="off"]').each(function() {
        $(this).prop('type', 'text');
        $('<input type="password"/>').hide().insertBefore(this);
        $(this).focus(function() {
            $(this).prop('type', 'password');
        });
    });     
});

To rozwiązanie działa zarówno dla Chrome jak i FF.

 3
Author: mfernandes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-04 11:46:26

Tak, aby ludzie zdawali sobie sprawę - atrybut' autocomplete ' działa przez większość czasu, ale zaawansowani użytkownicy mogą obejść go za pomocą bookmarklet.

Posiadanie przeglądarki zapisywania haseł faktycznie zwiększa ochronę przed keylogging, więc prawdopodobnie najbezpieczniejszą opcją jest zapisywanie haseł w przeglądarce, ale chroń je hasłem głównym (przynajmniej w Firefoksie).

 2
Author: Thrawn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-07 02:29:45

Mam pracę, która może pomóc.

Możesz zrobić własną czcionkę hack. Zrób więc niestandardową czcionkę, ze wszystkimi znakami na przykład kropką / kółkiem / gwiazdą. Użyj tego jako niestandardowej czcionki na swojej stronie internetowej. Sprawdź jak to zrobić w inkscape: Jak zrobić własną czcionkę

Następnie w formularzu logowania użyj:

<form autocomplete='off'  ...>
   <input type="text" name="email" ...>
   <input type="text" name="password" class="password" autocomplete='off' ...>
   <input type=submit>
</form>

Następnie dodaj swój css:

@font-face {
    font-family: 'myCustomfont';
    src: url('myCustomfont.eot');
    src: url('myCustomfont?#iefix') format('embedded-opentype'),
         url('myCustomfont.woff') format('woff'),
         url('myCustomfont.ttf') format('truetype'),
         url('myCustomfont.svg#myCustomfont') format('svg');
    font-weight: normal;
    font-style: normal;

}
.password {
  font-family:'myCustomfont';
}

Całkiem kompatybilny z przeglądarką. Próbowałem IE6+, FF, Safari i Chrome. Upewnij się tylko, że czcionka oet to, że konwertujesz, nie zostanie uszkodzone. Mam nadzieję, że to pomoże?

 2
Author: Dai Bok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-25 11:49:43

Najprostszym sposobem rozwiązania tego problemu jest umieszczenie pól wejściowych poza znacznikiem formularza i dodanie dwóch ukrytych pól wewnątrz znacznika formularza. Następnie w submit Event listener zanim dane formularza zostaną przesłane do serwera kopiują wartości z widocznych danych wejściowych do niewidocznych.

Oto przykład (nie można go uruchomić tutaj, ponieważ akcja formularza nie jest ustawiona na prawdziwy skrypt logowania):

<!doctype html>
<html>
<head>
  <title>Login & Save password test</title>
  <meta charset="utf-8">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>

  <body>
      <!-- the following fields will show on page, but are not part of the form -->
      <input class="username" type="text" placeholder="Username" />
      <input class="password" type="password" placeholder="Password" />

      <form id="loginForm" action="login.aspx" method="post">
        <!-- thw following two fields are part of the form, but are not visible -->
        <input name="username" id="username" type="hidden" />
        <input name="password" id="password" type="hidden" />
        <!-- standard submit button -->
        <button type="submit">Login</button>
      </form>

    <script>
      // attache a event listener which will get called just before the form data is sent to server
      $('form').submit(function(ev) {
        console.log('xxx');
        // read the value from the visible INPUT and save it to invisible one
        // ... so that it gets sent to the server
        $('#username').val($('.username').val());
        $('#password').val($('.password').val());
      });
    </script>

  </body>
</html>
 2
Author: knee-cola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-05 14:25:36

Moje obejście JS (jquery) polega na zmianie typu wprowadzania hasła na tekst w formularzu wyślij. Hasło może stać się widoczne na sekundę, więc ukrywam również wejście tuż przed tym. wolałbym nie używać tego do formularzy logowania , ale jest to przydatne (razem z autocomplete = "off") na przykład w części administracyjnej strony.

Spróbuj umieścić to w konsoli (z jquery), zanim wyślesz formularz.

$('form').submit(function(event) {
    $(this).find('input[type=password]').css('visibility', 'hidden').attr('type', 'text');
});

Testowane na Chrome 44.0.2403.157 (64-bit).

 2
Author: ovalek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-29 00:14:01

Przetestowałem wiele rozwiązań. Dynamiczna Nazwa pola hasła, wiele pól hasła (niewidoczne dla fałszywych), zmiana typu wprowadzania z "text" na "password", autocomplete="off", autocomplete= "new-password",... ale nic nie rozwiązało go z najnowszą przeglądarką.

Aby pozbyć się hasła zapamiętaj, w końcu potraktowałem hasło jako pole wejściowe i "rozmyłem" wpisany tekst.

Jest mniej "bezpieczne" niż natywne pole hasła, ponieważ wybranie wpisanego tekstu wyświetli go jako czysty tekst, ale hasło nie jest pamiętane. Zależy to również od aktywacji Javascript.

Będziesz musiał oszacować ryzyko użycia poniższej propozycji vs opcji zapamiętania hasła z nawigatora.

Podczas gdy zapamiętywanie hasła może być zarządzane (disbaled per site) przez użytkownika, jest to dobre dla komputera osobistego, a nie dla "publicznego" lub współdzielonego komputera.

W moim przypadku jest to ERP działający na współdzielonych komputerach, więc spróbuję go do mojego rozwiązania poniżej.

<input style="background-color: rgb(239, 179, 196); color: black; text-shadow: none;" name="password" size="10" maxlength="30" onfocus="this.value='';this.style.color='black'; this.style.textShadow='none';" onkeypress="this.style.color='transparent'; this.style.textShadow='1px 1px 6px green';" autocomplete="off" type="text">
 2
Author: Cedric Simon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-11 18:39:14

Markus podniósł wielką uwagę. Postanowiłem poszukać atrybutu autocomplete i otrzymałem:

Jedynym minusem korzystania z tego atrybutem jest to, że nie jest to standard (działa w przeglądarkach IE i Mozilla), i spowoduje walidację XHTML do porażka. Myślę, że jest to przypadek, w którym rozsądne jest złamanie walidacji jednak. (źródło)

Więc muszę powiedzieć, że chociaż nie działa w 100% to jest obsługiwane w główne przeglądarki więc jest to świetne rozwiązanie.

 1
Author: Joseph Pecoraro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 14:29:01

Próbowałem powyżej autocomplete="off" i nic się nie udało. jeśli używasz angular js, rekomenduję, aby przejść z button I ng-click.

<button type="button" class="" ng-click="vm.login()" />

To ma już zaakceptowaną odpowiedź dodaję to, jeśli ktoś nie może rozwiązać problemu z zaakceptowaną odpowiedzią, może przejść z moim mechanizmem.

Dzięki za pytanie i odpowiedzi.
 1
Author: Lasitha Benaragama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-21 14:15:56

Jednym ze sposobów, jaki znam, jest użycie (na przykład) JavaScript do skopiowania wartości z pola hasła przed wysłaniem formularza.

Głównym problemem jest to, że rozwiązanie jest powiązane z JavaScript.

Z drugiej strony, jeśli może być powiązane z JavaScript, równie dobrze możesz hashować hasło po stronie klienta przed wysłaniem żądania na serwer.

 0
Author: Huppie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 14:23:48

Prawdziwy problem jest o wiele głębszy niż tylko dodawanie atrybutów do HTML - jest to powszechny problem bezpieczeństwa, dlatego ludzie wymyślili klucze sprzętowe i inne szalone rzeczy dla bezpieczeństwa.

Wyobraź sobie, że masz autocomplete = " off " doskonale działa we wszystkich przeglądarkach. Czy to pomoże z ochroną? Oczywiście, że nie. Użytkownicy będą zapisywać swoje hasła w podręcznikach, na naklejkach dołączonych do monitora, gdzie każdy odwiedzający biuro może je zobaczyć, zapisywać je do plików tekstowych na pulpicie i tak on

Ogólnie rzecz biorąc, aplikacja internetowa i Web developer nie są w żaden sposób odpowiedzialne za bezpieczeństwo użytkowników końcowych. Użytkownicy końcowi mogą chronić tylko siebie. W idealnym przypadku muszą zachować wszystkie hasła w głowie i użyć funkcji resetowania hasła (lub skontaktować się z administratorem), jeśli o tym zapomną. W przeciwnym razie zawsze istnieje ryzyko, że hasło może być widoczne i skradzione w jakiś sposób.

Więc albo masz jakąś szaloną politykę bezpieczeństwa z kluczami sprzętowymi (np. niektóre banki oferują bankowość internetową który zasadniczo wykorzystuje uwierzytelnianie dwuskładnikowe) lub w zasadzie nie ma zabezpieczeń. To oczywiście trochę przesadzone. Ważne jest, aby zrozumieć, przed czym starasz się chronić:

    Nieautoryzowany dostęp. Najprostszy formularz logowania wystarczy w zasadzie. Czasami podejmowane są dodatkowe środki, takie jak losowe pytania bezpieczeństwa, captcha, utwardzanie haseł itp. / Align = "left" / HTTPS jest koniecznością, jeśli ludzie mają dostęp do Twojej aplikacji internetowej z publicznych hotspotów Wi-Fi itd. Wspomnieć, że nawet mając HTTPS, użytkownicy muszą regularnie zmieniać swoje hasła.
  1. Insider attack. Istnieją dwa przykłady takich, począwszy od zwykłej kradzieży haseł z przeglądarki lub tych, które zostały zapisane gdzieś na biurku (nie wymaga żadnych umiejętności informatycznych), a kończąc na kuciu sesji i przechwytywaniu lokalnego ruchu sieciowego (nawet zaszyfrowanego) i dalszym dostępie do aplikacji internetowej, tak jak to było innego użytkownika końcowego.

W tym konkretny post, widzę nieodpowiednie wymagania stawiane deweloperowi, których nigdy nie będzie w stanie rozwiązać ze względu na naturę problemu - bezpieczeństwo użytkowników końcowych. Moim subiektywnym punktem jest to, że deweloper powinien zasadniczo powiedzieć NIE i wskazać na problem wymagań, zamiast marnować czas na takie zadania, szczerze. To nie absolutnie sprawia, że system jest bezpieczniejszy, a raczej doprowadzi do przypadków z naklejkami na monitorach. Niestety, niektórzy szefowie słyszą tylko to, co chcą usłyszeć. Jeśli jednak na Twoim miejscu starałbym się wyjaśnić, skąd bierze się rzeczywisty problem, a autocomplete="off" nie rozwiąże go, chyba że zmusi użytkowników do trzymania wszystkich haseł wyłącznie w głowie! Programista nie może całkowicie chronić użytkowników, Użytkownicy muszą wiedzieć, jak korzystać z systemu, a jednocześnie nie ujawniać swoich wrażliwych / bezpiecznych informacji, a to wykracza daleko poza uwierzytelnianie.

 0
Author: ruruskyi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-26 11:13:32

W obliczu tego samego problemu HIPAA i znaleźć stosunkowo łatwe rozwiązanie,

  1. Utwórz ukryte pole hasła z nazwą pola jako tablicą.

    <input type="password" name="password[]" style="display:none" />
    
  2. Użyj tej samej tablicy dla rzeczywistego pola hasła.

    <input type="password" name="password[]" />
    

Przeglądarka (Chrome) może monitować o "Zapisz hasło", ale niezależnie od tego, czy użytkownik wybierze opcję Zapisz, przy następnym logowaniu hasło automatycznie wypełni ukryte pole hasła, slot zerowy w tablicy, pozostawiając 1. slot puste.

Próbowałem zdefiniować tablicę, na przykład " hasło [part2]", ale nadal pamiętam. Myślę, że wyrzuca go, jeśli jest to tablica nieindeksowana, ponieważ nie ma wyboru, jak tylko upuścić go w pierwszym miejscu.

Następnie używasz wybranego języka programowania, aby uzyskać dostęp do tablicy, na przykład PHP,

echo $_POST['password'][1];
 0
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-18 15:26:56

Ponieważ większość sugestii autocomplete, w tym zaakceptowana odpowiedź, nie działa w dzisiejszych przeglądarkach internetowych (np. menedżery haseł przeglądarek ignorują autocomplete), bardziej nowatorskim rozwiązaniem jest zamiana typów password i text i dostosowanie koloru tła do koloru tekstu, gdy pole jest polem zwykłego tekstu, które nadal ukrywa hasło, będąc prawdziwym polem hasła, gdy użytkownik (lub program taki jak KeePass) wprowadza hasło. Przeglądarki nie proszą o zapisywanie haseł, które są przechowywane w polach zwykłego tekstu.

Zaletą tego podejścia jest to, że pozwala na stopniowe ulepszanie i dlatego nie wymaga Javascript, aby pole funkcjonowało jako normalne pole hasła(możesz również zacząć od zwykłego pola tekstowego i zastosować to samo podejście, ale tak naprawdę nie jest to zgodne z HIPAA PHI/PII). Nie zależy to również od ukrytych formularzy/pól, które niekoniecznie muszą być wysyłane na serwer (ponieważ są ukryte) i niektóre z tych sztuczek również nie działa również w kilku nowoczesnych przeglądarkach.

JQuery plugin:

Https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js

Odpowiedni kod źródłowy z powyższego linku:

(function($) {
$.fn.StopPasswordManager = function() {
    return this.each(function() {
        var $this = $(this);

        $this.addClass('no-print');
        $this.attr('data-background-color', $this.css('background-color'));
        $this.css('background-color', $this.css('color'));
        $this.attr('type', 'text');
        $this.attr('autocomplete', 'off');

        $this.focus(function() {
            $this.attr('type', 'password');
            $this.css('background-color', $this.attr('data-background-color'));
        });

        $this.blur(function() {
            $this.css('background-color', $this.css('color'));
            $this.attr('type', 'text');
            $this[0].selectionStart = $this[0].selectionEnd;
        });

        $this.on('keydown', function(e) {
            if (e.keyCode == 13)
            {
                $this.css('background-color', $this.css('color'));
                $this.attr('type', 'text');
                $this[0].selectionStart = $this[0].selectionEnd;
            }
        });
    });
}
}(jQuery));

Demo:

Https://barebonescms.com/demos/admin_pack/admin.php

Kliknij "Dodaj wpis" w menu, a następnie przewiń na dół strony do "Module: Stop Password Manager".

Zastrzeżenie: chociaż takie podejście działa dla osób widzących, mogą wystąpić problemy z oprogramowaniem czytnika ekranu. Na przykład czytnik ekranu może odczytać hasło użytkownika na głos, ponieważ widzi pole tekstowe. Mogą wystąpić również inne nieprzewidziane konsekwencje korzystania z powyższej wtyczki. Zmiana wbudowanej funkcjonalności przeglądarki internetowej powinna odbywać się oszczędnie z testowaniem szerokiej gamy warunków i przypadków brzegowych.

 0
Author: CubicleSoft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 15:26:20

To jest mój kod html do rozwiązania. działa dla Chrome-Safari-Internet Explorer . Stworzyłem nową czcionkę, której wszystkie znaki wydają się"●". Następnie używam tej czcionki do mojego tekstu hasła. Uwaga: moja nazwa czcionki to "passwordsecretregular".

<style type="text/css">
         #login_parola {
             font-family: 'passwordsecretregular' !important;
            -webkit-text-security: disc !important;
            font-size: 22px !important;
         }
    </style>


<input type="text" class="w205 has-keyboard-alpha"  name="login_parola" id="login_parola" onkeyup="checkCapsWarning(event)"  
   onfocus="checkCapsWarning(event)" onblur="removeCapsWarning()" onpaste="return false;" maxlength="32"/>
 0
Author: Burak Ekincioğlu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-17 10:35:10

Czy istnieje sposób, aby witryna powiedziała przeglądarce, aby nie oferowała zapamiętywania haseł?

Strona informuje przeglądarkę, że jest to hasło za pomocą <input type="password">. Więc jeśli musi zrobić to z perspektywy strony internetowej, to będziesz musiał to zmienić. (Oczywiście nie polecam tego).

Najlepszym rozwiązaniem byłoby skonfigurowanie przeglądarki użytkownika tak, aby nie zapamiętywał haseł.

 -1
Author: Joseph Pecoraro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 14:23:41

Jeśli nie chcesz ufać fladze autouzupełniania, możesz upewnić się, że użytkownik wpisuje to pole za pomocą zdarzenia onchange. Poniższy kod to prosty formularz HTML. Ukryty element formularza password_edited zaczyna się od wartości 0. Po zmianie wartości hasła JavaScript na górze (funkcja pw_edited) zmienia wartość na 1. Po naciśnięciu przycisku sprawdza kod wartości przed wysłaniem formularza. W ten sposób, nawet jeśli przeglądarka cię ignoruje i automatycznie uzupełnia pole, Użytkownik nie może przejść strony logowania bez wpisania w polu Hasło. Upewnij się również, że puste pole hasła jest ustawione po ustawieniu ostrości. W przeciwnym razie możesz dodać znak na końcu, a następnie wrócić i usunąć go, aby oszukać system. Polecam dodać autocomplete= "off" do hasła dodatkowo, ale ten przykład pokazuje, jak działa kod zapasowy.

<html>
  <head>
    <script>
      function pw_edited() {
        document.this_form.password_edited.value = 1;
      }
      function pw_blank() {
        document.this_form.password.value = "";
      }
      function submitf() {
        if(document.this_form.password_edited.value < 1) {
          alert("Please Enter Your Password!");
        }
        else {
         document.this_form.submit();
        }
      }
    </script>
  </head>
  <body>
    <form name="this_form" method="post" action="../../cgi-bin/yourscript.cgi?login">
      <div style="padding-left:25px;">
        <p>
          <label>User:</label>
          <input name="user_name" type="text" class="input" value="" size="30" maxlength="60">
        </p>
        <p>
          <label>Password:</label>
          <input name="password" type="password" class="input" size="20" value="" maxlength="50" onfocus="pw_blank();" onchange="pw_edited();">
        </p>
        <p>
          <span id="error_msg"></span>
        </p>
        <p>
          <input type="hidden" name="password_edited" value="0">
          <input name="submitform" type="button" class="button" value="Login" onclick="return submitf();">
        </p>
      </div>
    </form>
  </body>
</html>
 -1
Author: Tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-21 22:43:33

Autocomplete = "off"nie działa przy wyłączaniu menedżera haseł w Firefoksie 31 i najprawdopodobniej nie w niektórych wcześniejszych wersjach.

Sprawdź dyskusję w Mozilli na temat tego problemu: https://bugzilla.mozilla.org/show_bug.cgi?id=956906

Chcieliśmy użyć drugiego pola hasła, aby wprowadzić hasło jednorazowe wygenerowane przez token. Teraz używamy wprowadzania tekstu zamiast wprowadzania hasła. :-(

 -1
Author: Naradana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-08 08:03:40

Otrzymałem podobne zadanie, aby wyłączyć automatyczne uzupełnianie loginu i hasła przez przeglądarkę, po wielu próbach i błędach okazało się, że poniższe rozwiązanie jest optymalne. Wystarczy dodać poniższe kontrolki przed oryginalnymi kontrolkami.

<input type="text" style="display:none">
<input type="text" name="OriginalLoginTextBox">

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

To działa dobrze dla IE11 i Chrome 44.0.2403.107

 -1
Author: Sheiky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-27 13:58:22

Na dzień dzisiejszy najbardziej obiecującą odpowiedzią wydaje się @murat Sam testowałem na Firefoksie, ale jak inni sugerowali w komentarzach, wciąż prosi o hasło za pierwszym razem. Potem nie ma znaczenia ile razy ponownie wpisujesz hasło(w moim przypadku przy użyciu Ajax). Jeśli strona zostanie przeładowana, powyższe zachowanie zostanie powtórzone.

Myślałem, że strony bankowe muszą mieć takie funkcjonalności więc sprawdziłem onlinesbi.com i robi to doskonale.! Nie pyta o przechowywanie hasła w każdej przeglądarce. Próbowałem sprawdzić źródło, ale nie mogłem się domyślić, że używa kombinacji ukrytych elementów plus autouzupełnianie i js. Nie mogłem tego rozgryźć, ale jest ich mnóstwo na tej platformie i mam nadzieję, że ktoś na pewno się domyśli i zamieści go tutaj.

 -1
Author: Jay B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-25 16:42:31

Autocomplete = " off " działa w większości nowoczesnych przeglądarek, ale inną metodą, której użyłem, która z powodzeniem działała z Epiphany (przeglądarka oparta na WebKit dla GNOME), jest przechowywanie losowo wygenerowanego prefiksu w stanie sesji (lub ukrytym polu, zdarzyło mi się mieć odpowiednią zmienną w stanie sesji) i użycie tego do zmiany nazwy pól. Epiphany nadal chce zapisać hasło, ale po powrocie do formularza nie wypełni pól.

 -2
Author: Peter Nelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-15 12:41:15