Aiuta gli utenti a cambiare facilmente le password aggiungendo un URL noto per la modifica delle password

Reindirizzare una richiesta a /.well-known/change-password all'URL change-passwords

Imposta un reindirizzamento da /.well-known/change-password alla pagina di modifica della password del tuo sito web. In questo modo, i gestori delle password potranno indirizzare gli utenti direttamente a quella pagina.

Introduzione

Come forse saprai, le password non sono il modo migliore per gestire gli account. Fortunatamente, esistono tecnologie emergenti come WebAuthn e tecniche come le password monouso che ci stanno aiutando ad avvicinarci a un mondo senza password. Tuttavia, queste tecnologie sono ancora in fase di sviluppo e le cose non cambieranno rapidamente. Molti sviluppatori dovranno comunque gestire le password per almeno i prossimi anni. Nell'attesa che le tecnologie e le tecniche emergenti diventino comuni, possiamo almeno semplificare l'utilizzo delle password.

Un buon modo per farlo è fornire un supporto migliore per i gestori delle password.

A cosa servono i gestori delle password

I gestori delle password possono essere integrati nei browser o forniti come app di terze parti. Possono aiutare gli utenti in vari modi:

Compila automaticamente la password per il campo di immissione corretto: alcuni browser riescono a trovare l'input corretto in modo euristico anche se il sito web non è ottimizzato per questo scopo. Gli sviluppatori web possono aiutare i gestori delle password annotando correttamente i tag input HTML.

Previeni il phishing: poiché i gestori delle password ricordano dove è stata registrata la password, la password può essere compilata automaticamente solo negli URL appropriati e non sui siti web di phishing.

Genera password efficaci e univoche: poiché le password efficaci e univoche vengono generate e memorizzate direttamente dal gestore delle password, gli utenti non devono ricordare un solo carattere della password.

La generazione e la compilazione automatica delle password utilizzando un gestore delle password hanno già avuto un buon impatto sul web, ma, considerando il loro ciclo di vita, l'aggiornamento delle password ogni volta che è necessario è importante quanto la generazione e la compilazione automatica. Per sfruttarla al meglio, i gestori delle password stanno aggiungendo una nuova funzionalità:

Rileva le password vulnerabili e suggerisci di aggiornarle: i gestori delle password possono rilevare le password riutilizzate, analizzarne l'entropia e l'efficacia e persino rilevare password potenzialmente trapelate o note come non sicure da fonti come Have I Been Pwned.

Un gestore delle password può avvisare gli utenti di password problematiche, ma è molto complicato chiedere agli utenti di passare dalla home page a una pagina di modifica della password, oltre a dover seguire la procedura effettiva di modifica della password (che varia da sito a sito). Sarebbe molto più semplice se i gestori delle password potessero indirizzare l'utente direttamente all'URL di modifica della password. È qui che diventa utile un URL ben noto per la modifica delle password.

Se prenoti un percorso dell'URL noto che reindirizza l'utente alla pagina di modifica della password, il sito web può reindirizzare facilmente gli utenti alla pagina corretta per modificare le password.

Configura "un URL noto per la modifica delle password"

.well-known/change-password è proposto come un URL ben noto per la modifica delle password. Devi solo configurare il server in modo che reindirizzi le richieste per .well-known/change-password all'URL di modifica della password del tuo sito web.

Ad esempio, supponiamo che il tuo sito web sia https://example.com e che l'URL per cambiare la password sia https://example.com/settings/password. Dovrai solo impostare il server in modo da reindirizzare una richiesta di https://example.com/.well-known/change-password a https://example.com/settings/password. È tutto. Per il reindirizzamento, utilizza il codice di stato HTTP 302 Found, 303 See Other o 307 Temporary Redirect.

In alternativa, puoi pubblicare HTML all'URL .well-known/change-password con un tag <meta> utilizzando un http-equiv="refresh".

<meta http-equiv="refresh" content="0;url=https://example.com/settings/password">

Rivedi il codice HTML della pagina di modifica della password

Lo scopo di questa funzionalità è rendere più fluido il ciclo di vita della password dell'utente. Puoi fare due cose per consentire all'utente di aggiornare la password senza ostacoli:

  • Se il modulo di modifica della password richiede la password attuale, aggiungi autocomplete="current-password" al tag <input> per consentire al gestore della password di completarlo automaticamente.
  • Per il campo della nuova password (in molti casi sono due campi per assicurarsi che l'utente abbia inserito correttamente la nuova password), aggiungi autocomplete="new-password" al tag <input> per aiutare il gestore delle password a suggerire una password generata.

Scopri di più sulle best practice per i moduli di accesso.

Come viene utilizzato nel mondo reale

Esempi

Grazie all'implementazione di Apple Safari,/.well-known/change-password è già disponibile su alcuni dei principali siti web da un po' di tempo:

Provali e fai lo stesso per il tuo.

Compatibilità del browser

Un URL noto per la modifica delle password è supportato in Safari dal 2019. Il gestore delle password di Chrome inizierà a supportarlo a partire dalla versione 86 (la cui versione stabile è prevista per la fine di ottobre 2020) e potrebbero seguire altri browser basati su Chromium. Firefox ritiene che valga la pena implementarlo, ma non ha comunicato che prevede di farlo a partire da agosto 2020.

Comportamento del Gestore delle password di Chrome

Vediamo come il Gestore delle password di Chrome gestisce le password vulnerabili.

Il gestore delle password di Chrome è in grado di verificare la presenza di password compromesse. Andando su about://settings/passwords, gli utenti possono eseguire Controlla password sulle password memorizzate e visualizzare un elenco di password consigliate per l'aggiornamento.

Funzionalità Controlla password di Chrome

Se fai clic sul pulsante Modifica password accanto a una password che è consigliabile aggiornare, il browser:

  • Apri la pagina di modifica della password del sito web se /.well-known/change-password è configurato correttamente.
  • Apri la home page del sito web se /.well-known/change-password non è configurato e Google non conosce il valore alternativo.

I gestori delle password cercano di determinare se un sito web supporta un URL ben noto per la modifica delle password inviando una richiesta a /.well-known/change-password prima di inoltrare effettivamente un utente a questo URL. Se la richiesta restituisce 404 Not Found è ovvio che l'URL non è disponibile, ma una risposta 200 OK non necessariamente significa che l'URL è disponibile, perché esistono alcuni casi limite:

  • Un sito web con rendering lato server mostra "Non trovato" quando non sono presenti contenuti, ma con 200 OK.
  • Un sito web con rendering lato server risponde con 200 OK quando non sono presenti contenuti dopo il reindirizzamento alla pagina "Non trovato".
  • Un'app a pagina singola risponde con la shell con 200 OK e mostra la pagina "Non trovato" lato client quando non sono presenti contenuti.

Per questi casi limite, gli utenti verranno reindirizzati a una pagina "Non trovato", che sarà fonte di confusione.

Ecco perché esiste un meccanismo standard proposto per determinare se il server è configurato per rispondere con 404 Not Found quando non sono presenti contenuti, richiedendo una pagina casuale. In realtà, anche l'URL è riservato: /.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200. Ad esempio, Chrome utilizza questo percorso dell'URL per determinare se può prevedere in anticipo un URL corretto per la modifica della password da /.well-known/change-password.

Quando esegui il deployment di /.well-known/change-password, assicurati che il server restituisca 404 Not Found per i contenuti non esistenti.

Feedback

Se hai un feedback sulla specifica, segnala un problema nel repository della specifica.

Risorse

Foto di Matthew Brodeur su Unsplash