Domanda

Una delle gioie di lavorare per un'agenzia di assistenza sanitaria del governo è di avere a che fare con tutte le paranoie intorno trattare con PHI (Informazioni Sanitarie Protette).Non fraintendetemi, io sono tutto per fare tutto il possibile per proteggere i dati personali dei cittadini (salute, finanziari, le abitudini di navigazione, etc.), ma a volte le persone ottenere un po ' troppo nervoso.

Caso in questione:Uno del nostro stato di clienti recentemente scoperto che il browser fornisce la funzione comoda per salvare la vostra password.Sappiamo tutti che c'è stato per un po ' ed è del tutto facoltativo ed è l'utente a decidere se sia o non è una smart decisione di utilizzare o meno.Tuttavia, c'è un po ' di clamore, al momento, e ci viene chiesto di trovare un modo per disabilitare questa funzionalità per il nostro sito.

Domanda:C'è un modo per un sito per dire al browser di non offrire a ricordare la password?Sono stato in giro per il web lo sviluppo di un lungo periodo di tempo, ma non so che ho incontrato prima.

Ogni aiuto è apprezzato.

È stato utile?

Soluzione

Non so se funziona in tutti i browser, ma si dovrebbe provare a impostare autocomplete="off" sul modulo.

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

Il modo più semplice e più semplice modo per disattivare la Forma e di memorizzazione delle Password richiede e prevenire il modulo che i dati nella cache in una sessione di storia è quello di utilizzare il completamento automatico form elemento di attributo con il valore "off".

Da http://developer.mozilla.org/En/How_to_Turn_Off_Form_Autocompletion

Qualche piccola ricerca mostra che questo funziona in IE, ma lascio garanzie ;)

@Giuseppe:Se è un requisito indispensabile per passare XHTML convalida con il markup effettivo (non so perché sarebbe però) è teoricamente in grado di aggiungere questo attributo con javascript dopo, ma poi gli utenti con js disabilitato (probabilmente trascurabili importo della userbase o zero se il sito richiede js) avrà ancora le password salvate.

Esempio con jQuery:

$('#loginForm').attr('autocomplete', 'off');

Altri suggerimenti

Avevo lottato con questo problema un po', con un tocco unico al problema.Gli utenti con privilegi potrei avere la password salvate il lavoro per loro, ma gli utenti normali è necessario.Questo significava che gli utenti "privilegiati" ha avuto il login per due volte, la seconda applicazione di alcuna password salvate.

Con questo requisito, standard autocomplete="off" metodo non funziona su tutti i browser, in quanto la password potrebbero essere stati salvati dal primo login.Un collega ha trovato una soluzione per sostituire il campo della password quando si è focalizzata con un nuovo campo password, e poi concentrarsi sul nuovo campo password (quindi collegare l'evento stesso gestore).Questo ha funzionato (tranne che ha causato un ciclo infinito in IE6).Forse c'era un modo per aggirare, ma mi stava causando un attacco di emicrania.

Infine, ho provato solo con username e password al di fuori della forma.Con mia grande sorpresa, questo ha funzionato!Ha funzionato su IE6, e le attuali versioni di Firefox e Chrome su Linux.Non ho testato, ma ho il sospetto che funziona nella maggior parte se non tutti i browser (ma non mi sorprenderebbe se ci fosse un browser là fuori che non importava se c'era nessuna forma).

Ecco qualche esempio di codice, insieme con alcuni jQuery per farlo funzionare:

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

Basta usare

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

oltre a

autocomplete="off"

di ingresso(s) che si desidera non ricordo i dati del modulo (username, password, etc.) come mostrato di seguito:

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

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

Testato sulle ultime versioni dei principali browser, cioè Google Chrome, Mozilla Firefox, Microsoft Edge, etc.e funziona come un fascino.Spero che questo aiuta...

Bene, è un post vecchio, ma ancora dare la mia soluzione, che la mia squadra aveva cercato di raggiungere per tempo.Abbiamo appena aggiunto un nuovo input type="password" campo all'interno del modulo e lo avvolse in un div e fatto il div nascosto.Fatto in modo che questo div è prima dell'effettiva immissione della password.Questo ha funzionato per noi e non ha dato alcuna opzione Salva Password

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

È possibile impedire che il browser di corrispondenza di forme dalla randomizzazione il nome utilizzato per il campo password ogni spettacolo.Quindi il browser vede una password per lo stesso url, ma non può essere sicuro che è il stessa password.Forse è il controllo di qualcosa d'altro.

Aggiornamento: si noti che questo dovrebbe essere oltre a utilizzare il completamento automatico o altre tattiche, non una sostituzione per loro, per i motivi indicati da altri.

Si noti inoltre che questo sarà solo evitare che il browser da auto-completamento la password.Non le impediscono di memorizzazione la password in qualsiasi livello di arbitrario, la sicurezza, il browser si sceglie di utilizzare.

Uso reale l'autenticazione a due fattori per evitare il sole dipendenza le password che possono essere memorizzati in molti altri posti che la cache del browser.

Il modo più pulito è quello di utilizzare autocomplete="off" tag attributo, ma Firefox non correttamente obbedire quando si passa campi con il tasto Tab.

L'unico modo per interrompere questo è quello di aggiungere un falso nascosto campo della password trucchi browser per popolare la password.

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

Si tratta di un brutto hack, perché si modifica il comportamento del browser, che dovrebbe essere considerata cattiva pratica.Utilizzare solo se si ha realmente bisogno.

Nota:questo ti permetterà di interrompere la password di riempimento automatico, perché FF si "salva" il valore di #prevent_autofill (che è vuoto) e si tenta di compilare tutte le password salvate, come si utilizza sempre il primo type="password" ingresso che si trova in DOM dopo le rispettive "nome utente" ingresso.

Ho testato che l'aggiunta di autocomplete="off" nel tag form in tutti i principali browser.In realtà, la Maggior parte dei popoli a NOI utilizzando IE8 finora.

  1. IE8, IE9, IE10, Firefox, Safari funziona bene.

    Browser non chiedere "salva password".Inoltre, in precedenza salvato username & password non popolato.

  2. Chrome & IE 11 non supporta l'autocomplete="off"
  3. FF sostenere l'autocomplete="off".ma a volte salvata esistente le credenziali sono popolate.

Aggiornamento su giugno 11, 2014

Infine, sotto è un cross browser soluzione utilizzando javascript e si sta lavorando bene in tutti i browser.

È necessario rimuovere tag "modulo" nel form di login.Dopo la validazione lato client, metti che le credenziali nascosto modulo e inviarlo.

Inoltre, aggiungere due metodi.uno per la convalida "validateLogin()" e un altro per l'ascolto invio dell'evento, fare clic su inserisci nella casella di testo/password e/o il pulsante "checkAndSubmit()".perché ora il modulo di login non hanno un tag form, quindi immettere l'evento non lavoro qui.

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

Buona fortuna!!!

Non è davvero l'unica cosa che si può realisticamente fare è offrire consigli sul sito;forse, prima della loro prima volta che si accede, si potrebbe mostrare un modulo con le informazioni che indica che non è consigliabile che permettono al browser di memorizzare la password.

Quindi l'utente dovrà immediatamente seguire i consigli, scrivere la password su un post-it e il nastro per il loro monitor.

Quello che ho fatto è una combinazione di autocomplete="off" e di compensazione dei campi password utilizzando un javascript / jQuery.

jQuery Esempio:

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

Utilizzando setTimeout() si può attendere per il browser per completare il campo prima di cancellare, altrimenti il browser sempre di completamento automatico dopo aver sgombrare il campo.

se autocomplete="off" non funziona...rimuovere il tag form e utilizzare un tag div, invece, per poi passare i valori del form che utilizza jquery per il server.Questo ha funzionato per me.

Perché autocomplete="off" non funziona per i campi password, si deve fare affidamento su javascript.Ecco una semplice soluzione basata su risposte trovato qui.

Aggiungere l'attributo data-password-autocomplete="off" per il campo password:

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

Includere le seguenti 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');
        });
    });     
});

Questa soluzione funziona sia per Chrome e FF.

Solo così la gente si rende conto - il "completamento automatico' attributo funziona la maggior parte del tempo, ma la potenza, gli utenti possono ottenere intorno ad esso utilizzando un bookmarklet.

Avere un browser salva le password in realtà aumenta la protezione contro i keylogger, così forse l'opzione più sicura è quello di salvare le password nel browser, ma di proteggerli con una password master (almeno in Firefox).

Ho un lavoro in giro, che può essere di aiuto.

Si potrebbe fare un tipo di carattere personalizzato hack.Così, un tipo di carattere personalizzato, con tutti i personaggi come un dot / cerchio / stella, per esempio.Utilizzare questo come un tipo di carattere personalizzato per il tuo sito.Scopri come farlo in inkscape: come fare il vostro proprio tipo di carattere

Quindi accedere al proprio modulo di utilizzare:

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

Quindi aggiungere il 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';
}

Bel cross browser compatibile.Io ho provato con IE6+, FF, Safari e Chrome.Basta fare in modo che il oet tipo di carattere che si converte non ottenere danneggiato.Speranza che aiuta?

Markus sollevato un gran punto.Ho deciso di cercare la autocomplete attributo e ottenuto il seguente:

L'unico aspetto negativo di questo attributo è che non è standard (funziona in IE e Mozilla), a causa XHTML convalida esito negativo.Penso che questo è un caso in cui è ragionevole pausa convalida tuttavia. (fonte)

Quindi direi che anche se non funziona al 100% su tutta la linea è gestita nei principali browser quindi è una grande soluzione.

Il modo più semplice per risolvere questo problema è quello di posizionare i campi di INPUT al di fuori del tag FORM e aggiungere due campi nascosti all'interno del tag FORM.Poi, in un evento submit ascoltatore prima che i dati del form viene inviato al server di copiare i valori visibili ingresso a quelli invisibili.

Ecco un esempio (non è possibile eseguire qui, dal momento che la forma di azione non è impostato per un vero e proprio script di accesso):

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

Il mio js (jquery) per risolvere il problema è quello cambiare la password di input di tipo testo per l'invio del form.La password potrebbe diventare visibile per un secondo, così ho anche nascondere l'ingresso poco prima. Piuttosto, non vorrei utilizzare questo per i moduli di login, ma è utile (insieme con autocomplete="off") per esempio all'interno di parte di amministrazione del sito.

Prova a mettere questo all'interno di una console (con jquery), prima di inviare il modulo.

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

Testato su Chrome 44.0.2403.157 (64-bit).

Ho provato sopra autocomplete="off" e ancora successo nulla.se si utilizza angolare js mio consiglio è di andare con un pulsante e il ng-fare clic su.

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

Questo già hanno accettato di rispondere im aggiunta a questo, se qualcuno sopraelevazione di risolvere il problema con il accettato la risposta si può andare con il mio meccanismo.

Grazie per la domanda e le risposte.

Ho provato un sacco di soluzioni.Dynamic nome del campo password, password più campi (invisibile per quelli falsi), cambiando il tipo di ingresso da "testo" e "password", autocomplete="off", autocomplete="nuova password",...ma nulla di risolto con i browser recenti.

Per sbarazzarsi di password ricorda, infine ho trattato la password come campo di input, e "sfocatura" il testo digitato.

È meno "sicuro" di un nativo campo password dal momento che la selezione del testo digitato sarebbe mostrare come il testo in chiaro, ma la password non viene memorizzata.Dipende anche avere Javascript attivato.

Si dovrà stimare il rischio di utilizzo di seguito proposta vs password ricordati di opzione dal navigatore.

Mentre la password ricordati possono essere gestiti (disabilitato per ogni sito da parte dell'utente, va bene per un personal computer, non per un "pubblico" o di un computer condiviso.

Il mio caso è per un ERP in esecuzione sul computer condivisi, così potrai provare la mia soluzione qui sotto.

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

Un modo per conoscere è quello di utilizzare (per esempio) JavaScript per copiare il valore del campo password prima di inviare il modulo.

Il problema principale di questo è che la soluzione è legato a JavaScript.

Poi di nuovo, se può essere legato a JavaScript, si potrebbe pure l'hash della password sul lato client prima di inviare una richiesta al server.

Il vero problema è molto più profondo di una semplice aggiunta di attributi HTML - questa è la comune preoccupazione per la sicurezza, è per questo che hanno inventato i tasti hardware e altre cose folli per la sicurezza.

Immaginate di avere autocomplete="off" perfettamente funzionante in tutti i browser.Vorrei che aiutare?Naturalmente, no.Gli utenti potranno scrivere le loro password in libri di testo, adesivi attaccati ai loro monitor, dove ogni visitatore può vedere, durante il salvataggio di file di testo sul desktop e così via.

In generale, web, sviluppo di applicazioni web e non è responsabile in alcun modo per la sicurezza degli utenti finali.Gli utenti finali sono in grado di difendersi solo.Idealmente, essi DEVONO conservare tutte le password nella loro testa e utilizzare la password di funzionalità di ripristino (o amministratore) nel caso in cui essi è stato dimenticato.Altrimenti ci sarà sempre il rischio che la password può essere visto e rubato in qualche modo.

Quindi, o hai qualche folle politica di sicurezza con chiavi hardware (come, alcune banche offrono per Internet-banking che, fondamentalmente, si avvale di autenticazione a due fattori) o NESSUNA PROTEZIONE, fondamentalmente.Bene, questo è un po ' esagerata, naturalmente.È importante capire cosa stai cercando di proteggere contro:

  1. Accesso non autorizzato.Più semplice form di login è sufficiente fondamentalmente.A volte, le ulteriori misure adottate, come random domande di sicurezza, Captcha, password tempra ecc.
  2. Credenziali di sniffing.HTTPS è UN MUST se la gente accedere all'applicazione web da hotspot Wi-Fi pubblici etc.Ricordare che anche avendo HTTPS, gli utenti hanno bisogno di cambiare le loro password regolarmente.
  3. Insider attacco.Ci sono due diversi esempi di queste, a partire dal semplice furto di password dal browser o quelli che avete scritto da qualche parte sulla scrivania (non richiede competenze) e che si concluderà con la sessione di forgiatura e di intercettare il traffico di rete locale (anche quelli protetti) e ulteriore accesso a web application, proprio come era un altro utente finale.

In particolare In questo post, posso vedere inadeguata esigenze degli sviluppatori che egli non sarà mai in grado di risolvere a causa della natura del problema - la sicurezza degli utenti finali.Il mio soggettivo punto è che sviluppatore fondamentalmente dovrebbe dire di NO e punto sul requisito problema, anziché perdere tempo con i compiti, onestamente.Questo non è assolutamente rendere più sicuro il sistema, sarà piuttosto portare a casi con adesivi sul monitor.Purtroppo, alcuni boss sentire solo quello che vogliono sentire.Tuttavia, se fossi in te proverei a spiegare il vero problema sta venendo, e che autocomplete="off" non risolvere il problema a meno che non costringono gli utenti a mantenere tutte le loro password solo nella loro testa!Sviluppatore sul suo fine non può proteggere gli utenti completamente, gli utenti devono sapere come utilizzare il sistema e, al tempo stesso, non esporre la loro sensibile/informazioni sicure e questo va ben al di là di autenticazione.

Di fronte alla stessa HIPAA problema e trovato una soluzione relativamente semplice,

  1. Creare una password nascosta campo con il nome del campo come un array.

    <input type="password" name="password[]" style="display:none" />
    
  2. Utilizzare la stessa matrice per l'effettivo campo password.

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

Il browser (Chrome) potrebbe essere chiesto "Salva password", ma a prescindere se l'utente seleziona salva, al successivo login, la password viene compilato automaticamente le password nascoste campo, la fessura zero dell'array, lasciando il 1 ° slot vuoto.

Ho cercato la definizione di array, come "password[part2]" ma è ancora ricordato.Penso che butta fuori se si tratta di un non indicizzata array perché non ha scelta, ma per cadere in il primo posto.

Quindi si utilizza il linguaggio di programmazione a scelta per accedere alla matrice, ad esempio PHP,

echo $_POST['password'][1];

Poiché la maggior parte delle autocomplete suggerimenti, tra cui accettato di rispondere, non lavoro oggi browser web (es.web browser gestori di password ignorare autocomplete), una più nuova soluzione per lo scambio tra password e text tipi e rendere il colore di sfondo abbinare il colore del testo quando il campo è un normale campo di testo, che continua a nascondere la password, pur essendo un vero e proprio campo password quando l'utente (o un programma come KeePass) è l'inserimento di una password.I browser non chiedi di salvare le password che vengono memorizzati in campi di testo normale.

Il vantaggio di questo approccio è che esso permette miglioramento progressivo e, pertanto, non necessita di Javascript per un campo di funzionare come un normale campo password (si potrebbe anche iniziare con un normale campo di testo, invece, e applicare lo stesso approccio, ma che non è davvero HIPAA PHI/PII-compliant).Né questo approccio dipende forme nascoste/campi che potrebbero non necessariamente essere inviati al server (perché sono nascosti) e alcuni di questi trucchi non lavorano in diversi browser moderni.

jQuery plugin:

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

Rilevante il codice sorgente dal link sopra:

(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

Fare clic su "Aggiungi" nel menu, quindi scorrere fino al fondo della pagina "Modulo:Interrompere La Password Manager".

Disclaimer:Mentre questo approccio funziona per individui ipovedenti, ci potrebbero essere dei problemi con il lettore di schermo.Per esempio, un lettore di schermo potrebbe leggere la password dell'utente a voce alta, perché si vede un normale campo di testo.Ci possono essere anche altre conseguenze impreviste di utilizzare il plugin.Alterare il built-in del browser web, la funzionalità dovrebbe essere fatto con parsimonia, con prova di una grande varietà di condizioni e casi limite.

C'è un modo per un sito per dire al browser di non offrire a ricordare la password?

Il sito dice al browser che si tratta di una password utilizzando <input type="password">.Quindi, se si deve fare questo da un sito web di prospettiva quindi si dovrebbe cambiare che.(Ovviamente io non consiglio questo).

La soluzione migliore sarebbe quella di chiedere all'utente di configurare il proprio browser in modo che non si ricorda la password.

Se non si desidera considerare attendibile il completamento automatico bandiera, si può fare in modo che l'utente digita nella casella utilizzando l'evento onchange.Il codice riportato di seguito è un semplice modulo HTML.Il modulo nascosto elemento password_edited inizia set a 0.Quando il valore della password viene modificata, il JavaScript in alto (pw_edited funzione) cambia il valore a 1.Quando il pulsante viene premuto, si verifica la valueenter qui il codice prima di inviare il modulo.In questo modo, anche se il browser ignora e autocompletes campo, l'utente non può passare la pagina di login senza dover digitare la password di campo.Inoltre, assicurarsi di vuoto il campo della password impostata la messa a fuoco.In caso contrario, è possibile aggiungere un carattere alla fine, per poi tornare indietro e rimuovere per ingannare il sistema.Mi consiglia di aggiungere l'autocomplete="off" per la password in più, ma questo esempio mostra come il codice di backup funziona.

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

autocomplete="off" non lavoro per la disabilitazione della password manager di Firefox 31 e molto probabilmente non in alcune versioni precedenti, troppo.

Checkout la discussione su mozilla su questo problema:https://bugzilla.mozilla.org/show_bug.cgi?id=956906

Abbiamo voluto utilizzare un secondo campo password inserire una password one-time generato da un token.Ora stiamo usando un input di testo invece di una password di ingresso.:-(

Mi è stato dato un compito simile a disabilitare l'auto-compilazione di un nome di login e password dal browser, dopo un sacco di tentativi ed errori ho trovato il seguente soluzione ottimale.Basta aggiungere il seguente controlli prima di originale controlli.

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

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

Questo funziona bene per IE11 e Chrome 44.0.2403.107

autocomplete="off" opere per la maggior parte dei browser moderni, ma un altro metodo che ho usato e che ha lavorato con successo con l'Epifania (un WebKit-powered browser per GNOME) è quello di memorizzare un generati in modo casuale prefisso in stato di sessione (o un campo nascosto, mi è capitato di avere un adeguato variabile in stato di sessione già), e utilizzare questo per modificare il nome dei campi.Epifania vuole ancora salvare la password, ma se si vuole tornare alla forma non compilare i campi.

Non ho avuto problemi con questo metodo:

Utilizza autocomplete="off", aggiungere una password nascosta campo e poi un altro non nascosta.Il browser tenta di completamento automatico nascosto uno se non il rispetto di autocomplete="off"

Un'altra soluzione è quella di rendere il POST utilizzando un modulo nascosto dove tutti gli input di tipo hidden.La forma visibile di usare input di tipo "password".Il secondo modulo sarà mai presentata e quindi il browser non può intercettare in tutta l'operazione di login.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top