Quando un utente desidera modificare la password per un account, la maggior parte delle applicazioni Web presenta un modulo in cui l'utente deve inserire la nuova password e la vecchia password. Finora ho pensato di capire i benefici di questo approccio. Ad esempio, la vecchia password è un'ulteriore attenuazione a CSRF ed evita il dirottamento dell'account (ad esempio, cambia la password per un account) se un utente malintenzionato ottiene la sessione Web.
A Google - ovviamente;) - è diverso. Quando l'utente fa clic sul collegamento per modificare la password, viene presentato un modulo di accesso e l'utente deve eseguire nuovamente l'autenticazione. Dopo la nuova autenticazione viene mostrato un modulo in cui l'utente deve solo inserire la nuova password. La vecchia password non è richiesta di nuovo.
Ci sono alcuni pro e contro con gli approcci:
- Chiedere la password proprio lì dove avviene il cambiamento (primo approccio) ha il vantaggio che il rischio che le debolezze dell'intero processo possano essere sfruttate è notevolmente ridotto. La nuova password e la vecchia password vengono elaborate in coppia. Se qualcosa va storto (ad esempio un utente malintenzionato è in grado di impostare un utente arbitrario per la sessione Web), allora c'è un'alta probabilità che la vecchia password protegga ancora la modifica della password.
- Per il secondo approccio (Google) potrebbero esserci punti deboli nel processo dopo la nuova autenticazione (ad esempio, la protezione CSRF potrebbe fallire, bug nella gestione delle sessioni).
- Il secondo approccio ha il vantaggio che l'applicazione per cambiare la password non è accessibile prima della ri-autenticazione. Quindi i punti deboli nell'applicazione non sono accessibili prima della ri-autenticazione. Le debolezze non accessibili non possono essere sfruttate.
- Forse Google vuole implementare un solo modo per fare l'autenticazione. Penso che Google utilizzi una sorta di analisi dei rischi per il login e che sia possibile che Google voglia semplicemente utilizzare quei meccanismi per il processo di modifica della password.
A mio parere, il rischio di punti deboli nel secondo approccio è molto più elevato, soprattutto perché possono verificarsi molte cose tra la nuova autenticazione e l'invio della nuova password. Inoltre, ritengo che riutilizzare l'analisi dei rischi e cose del genere dovrebbe essere possibile senza grandi sforzi anche per un processo di modifica della password.
Quindi la mia domanda è: mi manca qualcosa che rende il secondo approccio (Google) superiore?