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.
Utilità dei 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 archiviate direttamente dal gestore delle password, gli utenti non devono ricordarsi un solo carattere della password.
La generazione e la compilazione automatica delle password utilizzando un gestore delle password hanno già pubblicato bene il web, ma considerando il loro ciclo di vita, aggiornare le password ogni volta che è necessario è importante quanto generare e compilare automaticamente. 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.
Configurare un "URL noto per la modifica delle password"
.well-known/change-password
viene proposto come URL 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 della password per la modifica sia https://example.com/settings/password
. Dovrai solo impostare il tuo server in modo che reindirizzi una richiesta per 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">
Visita di nuovo 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 si tratta di due campi per garantire che
l'utente abbia inserito correttamente la nuova password), aggiungi
autocomplete="new-password"
al tag<input>
per consentire a Gestore delle password di 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 trapelate. Se passi
a about://settings/passwords
, gli utenti possono eseguire l'opzione Controlla password rispetto alle password memorizzate e visualizzare un elenco di password consigliate per l'aggiornamento.
Se fai clic sul pulsante Cambia 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.
200 OK
anche se /.well-known/change-password
non esiste?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
è evidente che l'URL non è disponibile, ma una risposta 200 OK
non
significa necessariamente che l'URL sia disponibile, perché si verificano 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
- Un URL noto per la modifica delle password
- Rilevare l'affidabilità dei codici di stato HTTP
- Best practice per i moduli di accesso
Foto di Matthew Brodeur su Unsplash