Does placing a plaintext password in a text input run the risk of the password being scraped by malicious plugins?
I plug-in dannosi possono analizzare tutti i dati dei moduli, i campi della password inclusi o persino registrarli prima che vengano scritti. Quindi cambiare il tipo non fa differenza qui.
In generale, non ha senso cercare di difendersi dai plugin del browser dannosi. Se il tuo utente ne ha uno, è game over.
Specifically, do modern browsers implement any security mechanisms around password-type inputs besides the visual obfuscation using dots?
I campi password hanno il completamento automatico disattivato per impostazione predefinita. Per impedire al browser di salvare la password e potenzialmente di farli fuoriuscire come suggerimenti in seguito, è necessario assicurarsi di impostare esplicitamente autocomplete="off"
nel campo di input. Questo dovrebbe gestire entrambi i suggerimenti durante la digitazione e il riempimento automatico dello stato precedente ad es. quando si utilizza il pulsante Indietro.
Potrebbero esserci browser più vecchi che ignorano autocomplete="off"
- chissà, i browser sono soliti fare ogni sorta di cose stupide - ma dubito che sia una grande percentuale. Ancora, potrebbe essere un problema.
La presenza di un campo password fa in modo che alcuni browser avvertano in modo più aggressivo sulle connessioni non crittografate. Quindi, usare i campi di testo invece potrebbe disattivare gli avvisi, il che è male. Ma se stai usando TLS con HSTS questo non dovrebbe essere un problema.
Inoltre, potrebbe creare problemi con i gestori di password (sia i browser integrati che quelli esterni). Ma è più una fruibilità che un problema di sicurezza.
Does the above link reflect the current industry best practice for this kind of functionality?
A parte il problema del completamento automatico, ritengo che ciò andrebbe bene fino a quando si è a posto con il rischio intrinseco della navigazione a spalla. Chissà cosa ho trascurato, però.
Dato che si dice "best practice del settore", devo menzionare che manipolare direttamente il DOM in questo modo non è più come si fa di solito, ma questo non ha nulla a che fare con la sicurezza.
Per essere onesti, devo ammettere che non sono un grande fan di questa funzionalità. Sembra un po 'hacky. Raccomanderei di non implementarlo a meno che tu non abbia ragioni molto specifiche per farlo. Ciò si basa più sul mio intuito (e su un'avversione generale verso le caratteristiche non essenziali) che su qualsiasi altra cosa, comunque.