Di recente ho fatto una domanda su cancellazione dei campi della password in UX a scopo di usabilità, ma sembra che tutti i siti utilizzino questo approccio per motivi di sicurezza. Perché è insicuro postare lo stesso pass che l'utente ha inserito?
Di recente ho fatto una domanda su cancellazione dei campi della password in UX a scopo di usabilità, ma sembra che tutti i siti utilizzino questo approccio per motivi di sicurezza. Perché è insicuro postare lo stesso pass che l'utente ha inserito?
Buona domanda. Avendo il vantaggio di guardare alcune delle risposte e di rifletterci io stesso, in realtà non vedo alcun vantaggio di major dalla cancellazione della password dal modulo parziale restituito all'utente, ma sicuramente sono alcuni rischi da prendere in considerazione.
Da un punto di vista della architettura della sicurezza (come già toccato @Roryalsop), di solito vuoi che le password scorrano solo in una direzione. Dall'utente all'applicazione, mai indietro. Questo vale per tutti i livelli e questo sistema a senso unico offre vantaggi dal punto di vista della sicurezza. Avere un'eccezione a questa regola potrebbe o potrebbe non essere una buona idea. Ma è per questo che la tua domanda è interessante. Questo scenario merita un'eccezione?
Osserviamo alcuni vettori di attacco e vediamo se il nullo della password protegge da qualcuno di questi:
Tuttavia, azzerare la password è abbastanza semplice, non dovrebbe danneggiare troppo l'esperienza dell'utente e mantenere le cose pulite da un punto di vista della sicurezza. Ti suggerisco comunque di continuare a farlo.
Se sei preoccupato per l'esperienza utente, prova a segui i consigli che ti erano già stati dati su UX - esegui validazione extra da parte del cliente, solo così l'utente ottiene un feedback tempestivo. Non sostituire la convalida sul server. Questa è la convalida più importante alla fine. Ma per il feedback degli utenti, la convalida sul lato client può fare miracoli per migliorare l'esperienza dell'utente e non è necessario prendere neppure un leggero rischio che la password venga memorizzata nella cache (o modificare l'architettura di sicurezza facendo un'eccezione).
Why is it insecure to post back the same pass that user has entered?
Perché se si visualizza la fonte sulla pagina posteriore pubblicata, la password sarà visibile in testo normale. Ciò va contro il principio secondo cui le password dovrebbero essere unidirezionali, vale a dire che le password possono essere immesse ma non emesse mai. Ad esempio, quando si memorizzano le password nel database, queste devono essere sottoposte a hash anziché crittografate per impedire che vengano estratte se un utente malintenzionato riesce a visualizzare i dati. Seguendo questo principio ovunque si otterrà un sistema più sicuro.
In questo caso può impedire la "spartitraffico" e può proteggerlo dal fatto che venga memorizzato nella cache dal browser e successivamente visualizzato.
È possibile avere una buona interfaccia utente e seguire questo principio. Ad esempio, il sistema potrebbe memorizzare la password hash e salata nello stato di sessione lato server, quindi sul modulo di ritorno il modulo mostra solo gli altri campi. Una volta che questo ha superato la convalida, viene utilizzata la password dallo stato di sessione piuttosto che da quella che il modulo avrebbe fornito. Naturalmente, è necessario prestare attenzione qui per invalidare la sessione se l'utente non continua con il processo di registrazione in modo che questa password non sovrascriva quella impostata dal visitatore successivo da quel browser. altrimenti potrebbe essere possibile un attacco per la sessione .
2 punti chiave qui:
Entrambi hanno dei rischi.
Questo è il motivo per cui la maggior parte dei siti web ha meccanismi di promemoria e di reset della password, quindi non è necessario inviarti la password. Potrebbero inviarti una password monouso come reset, che dovrai quindi modificare.
Alcuni invieranno la tua password in un percorso fuori banda, ma questi diventano sempre più rari a mano a mano che i rischi continuano a crescere.
(ovviamente la sicurezza dei meccanismi di reset della password è un'altra questione)
Leggi altre domande sui tag passwords