Tipo di input = password, non lasciare che il browser ricordi la password


Risposte:


123

Prova a usare autocomplete="off". Non sono sicuro che tutti i browser lo supportino, però. Documenti MSDN qui .

EDIT : Nota: la maggior parte dei browser ha abbandonato il supporto per questo attributo. Vedi autocomplete = "off" compatibile con tutti i browser moderni?

Questo è probabilmente qualcosa che dovrebbe essere lasciato all'utente piuttosto che al progettista del sito web.


2
Puoi anche inviare la pagina con HTTPS e tramite intestazione HTTP o tag META impedire la memorizzazione nella cache. In questo modo, anche la password non verrà memorizzata (almeno in Internet Explorer).
portiere

Per quanto riguarda la convalida, HTML5 aggiunge l'attributo di completamento automatico alla specifica, quindi ora va bene
VictorySaber,

9
Nota per i lettori futuri: tutti i principali browser si stanno muovendo per ignorare l'attributo. (vedi stackoverflow.com/a/21348793/37706 )
rdans

@ RyanDansie grazie per averlo sottolineato. Ho aggiornato la risposta. La vecchia risposta è ... vecchia.
tvanfosson

8
"Questo è probabilmente qualcosa che dovrebbe essere lasciato all'utente piuttosto che al progettista del sito web". ci sono ragioni sia tecniche che non tecniche per avere questo. Le password monouso non dovrebbero essere ricordate, ad esempio. I siti bancari con "inserisci la prima cifra del PIN" sono un altro. Non dimenticare che un analista aziendale potrebbe decidere di volere un campo password e rimuovere la scelta dallo sviluppatore.
Sprague

61

<input type="password" autocomplete="off" />

Vorrei solo aggiungere che come utente penso che questo sia molto fastidioso e una seccatura da superare. Consiglio vivamente di non utilizzarlo in quanto molto probabilmente aggraverà i tuoi utenti.

Le password non sono già archiviate nell'MRU e le macchine pubbliche configurate correttamente non salveranno nemmeno il nome utente.


23
+1 per "non infastidire i tuoi utenti". Questo è esattamente ciò che fa questo tipo di funzionalità. Proprio come i siti che forzano la disattivazione della cache in modo che il pulsante Indietro cancelli il modulo. ESTREMAMENTE irritante.
cletus

6
+1 Sono completamente d'accordo. È per un amministratore che modifica la pagina del profilo del cliente in cui inserisci una password solo se intendi cambiarla. In questo modo gli amministratori non cambiano la password ogni volta che vanno a modificare le informazioni del cliente.
DavGarcia

14
È molto utile per i campi del numero di carta di credito. Il modulo di PayPal è memorizzato in ogni browser e chiunque utilizzi il tuo computer può reinserire tutti i dati, quindi devi andare manualmente ed eliminare tutti i campi ricordati.
Egor Pavlikhin,

31
In un modulo in cui l'utente può impostare una password che non ha nulla a che fare con il proprio accesso, abilitare il completamento automatico è in realtà l'opzione più fastidiosa: il browser potrebbe offrire di salvare una password con cui non può effettivamente fare nulla. Inoltre, se la sicurezza è un problema delicato, non presumo che tutte le macchine pubbliche siano configurate correttamente.
jrb

3
Lo sto usando per una password monouso. Come ha detto jrb, sarebbe molto fastidioso se il browser lo memorizzasse.
Danation

12

Ho risolto in un altro modo. Puoi provare questo.

<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
// Using jQuery
$(function(){                                               
    setTimeout(function(){
        $("input#passfld").attr("type","password");
    },10);
});


// or in pure javascript
 window.onload=function(){                                              
    setTimeout(function(){  
        document.getElementById('passfld').type = 'password';
    },10);
  }   
</script>

#un altro modo

 <script type="text/javascript">    
 function setAutoCompleteOFF(tm){
    if(typeof tm =="undefined"){tm=10;}
    try{
    var inputs=$(".auto-complete-off,input[autocomplete=off]"); 
    setTimeout(function(){
        inputs.each(function(){     
            var old_value=$(this).attr("value");            
            var thisobj=$(this);            
            setTimeout(function(){  
                thisobj.removeClass("auto-complete-off").addClass("auto-complete-off-processed");
                thisobj.val(old_value);
            },tm);
         });
     },tm); 
    }catch(e){}
  }
 $(function(){                                              
        setAutoCompleteOFF();
    });
</script>

// devi aggiungere l'attributo autocomplete = "off" oppure puoi aggiungere class .auto-complete-off nella casella di input e divertirti

Esempio:

  <input id="passfld" type="password" autocomplete="off" />
    OR
  <input id="passfld" class="auto-complete-off" type="password"  />

4
Ciò impedisce al browser di memorizzare la password invece di impedire il completamento automatico, che è una soluzione migliore nel mio scenario.
Pau Fracés

Grazie, ha funzionato per me sull'ultimo Chrome. Nota: utilizzato su un sistema interno in cui è consentito solo Chrome, eseguire ulteriori test se si utilizza nel sito di produzione.
Izion

@AntoVinish, spero che la mia ultima soluzione funzioni in Firefox 40.
Sarwar Hasan

7

Ho provato quanto segue e sembra che funzioni con qualsiasi browser:

<input id="passfld" type="text" autocomplete="off" />

<script type="text/javascript">
    $(function(){  
        var passElem = $("input#passfld");
        passElem.focus(function() { 
            passElem.prop("type", "password");                                             
        });
    });
</script>

In questo modo è molto più sicuro rispetto all'utilizzo di tecniche di timeout, perché garantisce che il campo di input ceda alla password quando l'utente la focalizza.


5

Per quanto riguarda i problemi di sicurezza, ecco cosa ti dirà un consulente di sicurezza sull'intero problema del campo (questo è da un vero e proprio audit di sicurezza indipendente):

Completamento automatico HTML abilitato: i campi della password nei moduli HTML hanno il completamento automatico abilitato. La maggior parte dei browser ha una funzione per ricordare le credenziali utente inserite nei moduli HTML.

Rischio relativo: basso

Sistemi / dispositivi interessati: o https: // * ** * *** /

Sono anche d'accordo che questo dovrebbe coprire qualsiasi campo che contiene dati veramente privati. Ritengo che sia giusto costringere una persona a digitare sempre i dati della carta di credito, il codice CVC, le password, i nomi utente, ecc. Ogni volta che il sito accede a qualsiasi cosa che dovrebbe essere protetta [universalmente o in base ai requisiti di conformità legale]. Ad esempio: moduli di acquisto, siti di banche / crediti, siti fiscali, dati medici, federali, nucleari, ecc. - Non siti come Stack Overflow o Facebook.

Altri tipi di siti - ad esempio TimeStar Online per timbrare dentro e fuori il lavoro - è stupido, dal momento che uso sempre lo stesso PC / account al lavoro, non poter salvare le credenziali su quel sito - stranamente posso farlo sul mio Android ma non su un iPad. Anche su PC condivisi questo non sarebbe poi così male dal momento che timbrare in / out per qualcun altro in realtà non fa altro che infastidire il tuo supervisore. (Devono entrare ed eliminare i pugni errati - basta scegliere di non salvare su PC pubblici).


5
Basta aggiungere un commento qui per un motivo per cui non vorresti salvare una password. Gestisco un sito Web con account utente in cui gli amministratori possono modificare la password di un utente. Il client è attualmente infuriato dal fatto che Chrome si offra di salvare la password inserita nel modulo "modifica password" ogni volta per ogni utente , perché identifica erroneamente il modulo di modifica utente come modulo di accesso. Dare semplici istruzioni come "basta fare clic su Non ricordare mai la password" è al di là, a quanto pare.
carbonizzato Utensil

5
<input type="password" placeholder="Enter New Password" autocomplete="new-password">

Ecco qui.


2
È così, ci sono molte soluzioni alternative, ed è così semplice, testato con l'ultima versione di Firefox (v67) e Chrome (75).
Mariano Ruiz

Chrome 80 continuerà a offrire di ricordare la password dopo aver inviato il modulo.
Bouke il

4

Ecco la risposta migliore e la più semplice! Metti un campo password aggiuntivo davanti al tuo inputcampo e imposta il display:none, in modo che quando il browser lo compila, lo faccia in un modo inputche non ti interessa.

Cambia questo:

<input type="password" name="password" size="25" class="input" id="password" value="">

a questa:

<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">

In realtà, funziona se nel modulo sono presenti 2 campi password, ma il nuovo browser ignora la seconda password se non è visibile e abilitata; (
Cedric Simon

1
L'utilizzo display:nonenon funziona per me (Chrome 61 OSX), ma funziona:<input type="password" style="position: absolute; top: -1000px;">
John Hascall

2

Leggi anche questa risposta dove sta usando questa semplice soluzione che funziona ovunque (vedi anche la correzione per Safari mobile):

<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>

1

Puoi usare JQuery, selezionare l'elemento per ID:

$("input#Password").attr("autocomplete","off");

Oppure seleziona l'elemento per tipo:

$("input[type='password']").attr("autocomplete","off");

O anche:

Puoi usare Javascript puro:

document.getElementById('Password').autocomplete = 'off';

1

puoi anche usarlo come segue

$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);

1

visto che autocomplete = off è deprecato, suggerisco una soluzione più recente.

Imposta il campo della password su un normale campo di testo e maschera l'input con "dischi" utilizzando CSS. il codice dovrebbe assomigliare a questo:

<input type="text" class="myPassword" /> 

input .myPassword{
    text-security:disc;
    -webkit-text-security:disc;
    -mox-text-security:disc;
}

Tieni presente che questo potrebbe non funzionare correttamente sui browser Firefox ed è necessaria una procedura dettagliata aggiuntiva. Maggiori informazioni al riguardo qui: https://stackoverflow.com/a/49304708/5477548 .

La soluzione è stata presa da questo link , ma per rispettare i SO "no-hotlinks" l'ho riassunta qui.


0

Nel caso della maggior parte dei principali browser, avere un input esterno e non connesso a nessun modulo induce il browser a pensare che non ci sia stata sottomissione. In questo caso, dovresti utilizzare la convalida JS pura per il tuo accesso e sarebbe necessaria anche la crittografia delle tue password.

Prima:

<form action="..."><input type="password"/></form>

Dopo:

<input type="password"/>

1
A proposito, questo è un trucco che probabilmente non dovresti usare. Non utilizzando un tag form, il tuo codice diventa HTML4 per impostazione predefinita e rende più difficile convalidare gli account degli utenti.
Cannicidio

0

Ho trovato i seguenti lavori su Firefox e Chrome.

<form ... > <!-- more stuff -->
<input name="person" type="text" size=30 value="">
<input name="mypswd" type="password" size=6 value="" autocomplete="off">
<input name="userid" type="text" value="security" style="display:none">
<input name="passwd" type="password" value="faker" style="display:none">
<!-- more stuff --> </form>

Tutti questi si trovano nella sezione dei moduli. "person" e "mypswd" sono ciò che desideri, ma il browser salverà "userid" e "passwd" una volta e mai più poiché non cambiano. Potresti eliminare il campo "persona" se non ne hai davvero bisogno. In tal caso, tutto quello che vuoi è il campo "mypswd", che potrebbe cambiare in qualche modo noto all'utente della tua pagina web.


0

L'unico modo in cui posso fare in modo che Firefox, Edge e Internet Explorer disattivino il completamento automatico è aggiungere autocomplete = "false" nella dichiarazione del modulo come:

  <form action="postingpage.php" autocomplete="false" method="post">

e devo aggiungere il completamento automatico = "off" al mio modulo di input e cambiare il tipo in testo Come:

     <input type="text" autocomplete="off">

Sembra che questo codice html debba essere standardizzato con i browser. il tipo di modulo = password dovrebbe essere modificato in modo che sovrascriva le impostazioni del browser. L'unico problema che ho è che ho perso il mascheramento dell'input. Ma il lato positivo è che il fastidioso "questo sito non è sicuro" non viene mostrato in Firefox.

per me, non è un grosso problema poiché l'utente è già autenticato e la sua parte cambia nome utente e password


2
NON FARLO. I dati verranno comunque inviati in chiaro attraverso la rete, che è l'intero problema con HTTP (non HTTPS) in primo luogo, da cui il tuo "fastidioso" messaggio di avviso. Non fa differenza che l'utente sia già autenticato perché un uomo in mezzo può ancora vedere i dati di testo in chiaro e la registrazione lato server può essere configurata in modo diverso (potrebbe memorizzare le intestazioni della richiesta, mentre ci sono altri problemi se avesse memorizzato POST dati sotto HTTPS).
Jacob il

https crittografa il traffico. Se lo stai usando come parte di un'applicazione Internet pubblica, fallo comunque. Il metodo Post impedisce il bookmarking e più Iframe di codice php all'interno di un HTML impedisce l'iniezione di URL. Tecnicamente, dovresti inserire il tuo percorso completo. Se stai eseguendo la distribuzione, consiglierei di caricare una variabile $ _SESSION con l'URL di base scritto nel testo invece di guardare le variabili $ _SERVER. $ _SERVER ['HTTP_HOST'] e $ _SERVER ['PHP_SELF'] dovrebbero essere usati solo in ambienti non pubblici perché entrambi hanno diversi exploit.
drtechno

A proposito, il mio esempio è per i sistemi chiusi che non sono connessi a Internet in alcun modo
drtechno

nessuno ha toccato l'uso di uno schema di crittografia eseguito con "java onclick" quindi invia il modulo dopo la routine di crittografia.
drtechno
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.