Ho un sito Web, per il quale ho creato un componente aggiuntivo di accompagnamento per Firefox e Chrome. Entrambi sono distribuiti privatamente. In Firefox possono essere installati solo dal mio sito Web e, per Chrome, il collegamento allo store può essere ottenuto anche sul sito.
Il componente aggiuntivo è attualmente autorizzato nel modo seguente:
- L'utente accede al sito web
- L'utente accede alle impostazioni
- L'utente sceglie "Nuova chiave"
- La chiave viene rivelata nel campo di testo, dove gli utenti possono copiarlo, dopo di che la chiave non verrà più mostrata, a meno che ne venga generata una nuova
- L'utente deve copiare e incollare la chiave per aggiungere
- Il componente aggiuntivo sta inviando la chiave come parte della comunicazione con il server.
Il server utilizza la chiave per autorizzare l'aggiunta come uno degli utenti. Fornisce il permesso aggiuntivo dell'utente autorizzato, tuttavia alcune autorizzazioni sono ridotte a causa dell'autorizzazione senza password, ad esempio l'utente non può modificare la password o generare una nuova chiave dell'applicazione (questa operazione può essere eseguita solo sul sito Web in cui l'utente deve accedere- in con login e password).
Tutti gli utenti sono avvisati dei possibili gravi effetti della condivisione delle chiavi con altre persone.
Il sito Web utilizza HTTPS con HSTS ed è stato recentemente inserito nell'elenco di precaricamento. Pertanto non sono interessato alla perdita HTTP della chiave. La chiave è memorizzata come parte dell'API browser.storage
Sono comunque preoccupato se le chiavi sono abbastanza buone per le applicazioni.
Attualmente le chiavi sono generate usando bin2hex(random_bytes(64))
sotto PHP.
Sebbene le chiavi abbiano per impostazione predefinita accesso limitato all'account, mi chiedo se questo approccio sia addirittura sicuro in base alla progettazione, o se esiste un approccio migliore, per il quale potrei autorizzare l'add-on, senza che gli utenti debbano effettuare il log -in ogni volta.
Per impostazione predefinita, la chiave non viene mai eliminata automaticamente, tuttavia gli utenti possono eliminare la chiave corrente e la generazione di una nuova chiave rimuove quella precedente dal database.
Mi chiedo se ci siano possibili attacchi a cui non ho pensato, o se ci sono modi migliori per autorizzare gli utenti.