Ricordo di aver visto un modo per avere un <input type="password" />
tale che il browser non chieda all'utente di salvare la password. Ma sto disegnando uno spazio vuoto. C'è un attributo HTML o qualche trucco JavaScript che lo farà?
Ricordo di aver visto un modo per avere un <input type="password" />
tale che il browser non chieda all'utente di salvare la password. Ma sto disegnando uno spazio vuoto. C'è un attributo HTML o qualche trucco JavaScript che lo farà?
Risposte:
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.
<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.
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" />
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.
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).
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
Ecco qui.
Ecco la risposta migliore e la più semplice! Metti un campo password aggiuntivo davanti al tuo input
campo e imposta il display:none
, in modo che quando il browser lo compila, lo faccia in un modo input
che 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="">
display:none
non funziona per me (Chrome 61 OSX), ma funziona:<input type="password" style="position: absolute; top: -1000px;">
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');"/>
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';
puoi anche usarlo come segue
$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
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.
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"/>
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.
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