Per la tua tipica app web, un superutente amministratore dovrebbe avere il diritto di modificare la password di un utente o dovrebbe avere solo quell'utente? (Anche con l'abilità di modifica, l'amministratore non vedrebbe mai la password corrente).
Per la tua tipica app web, un superutente amministratore dovrebbe avere il diritto di modificare la password di un utente o dovrebbe avere solo quell'utente? (Anche con l'abilità di modifica, l'amministratore non vedrebbe mai la password corrente).
Vedo tre domande correlate:
Un utente amministratore può visualizzare la password di un utente? No. Questa è una cattiva idea. Non si deve esporre (tramite l'interfaccia di amministrazione) un modo per gli utenti amministratori di visualizzare le password degli altri utenti. Alcuni utenti possono riutilizzare le password su più siti. Pertanto, gli utenti non dovrebbero mai avere la possibilità di vedere la password dell'utente.
Inoltre, l'unico modo per consentire a un utente amministratore di visualizzare le password di altri utenti è quello di memorizzare quelle password in chiaro (o, se viene applicata una trasformazione, deve essere reversibile, nel qual caso le password potrebbero anche essere conservato in chiaro). Questa è una cattiva pratica di sicurezza. Le password memorizzate dovrebbero essere sempre sottoposte a hash, in modo che una violazione del database non rivelasse banalmente le password di tutti - e ciò significa che gli utenti amministratori non saranno in grado di visualizzare le password degli altri utenti.
Un utente amministratore può reimpostare la password di un utente? Sicuro. È utile Ad esempio, è ragionevole dare all'utente amministratore un modo per reimpostare la password dell'utente, ad esempio, attivando una e-mail all'utente per consentire loro di accedere e immettere una nuova password, o di generare una nuova password per l'utente e inviarla per e-mail per l'utente. Tuttavia, il sistema non dovrebbe visualizzare la nuova password per l'utente amministratore. Inoltre, in questo caso l'utente dovrebbe ricevere notifica che l'amministratore ha reimpostato la propria password (ad esempio, come parte dell'email che viene inviata a loro) e preferibilmente l'azione deve essere registrata insieme all'identità dell'utente amministratore.
Un utente amministratore può impostare la password di un utente? Questa è una funzionalità utile e ragionevole da fornire a un utente amministratore. Ad esempio, quando si creano nuovi utenti, a volte è utile che un utente amministratore sia in grado di generare una password per l'utente, inserirla nel sistema e comunicare la password all'utente tramite un canale fuori banda (ad es. , per telefono). Allo stesso modo, a volte può essere utile se c'è un modo per l'utente amministratore di andare sullo schermo per impostare una nuova password per l'utente, dare all'utente la tastiera abbastanza a lungo da digitare la nuova password preferita, e quindi fare clic su "ok "e imposta la password dell'utente. Si tratta di casi d'uso ragionevoli che è ragionevole sostenere, senza incorrere in significativi rischi per la sicurezza. In questo caso, l'utente dovrebbe ricevere alcune notifiche che l'amministratore reimposta la propria password (ad esempio, un'e-mail che viene inviata a loro) e preferibilmente l'azione deve essere registrata insieme all'identità dell'utente amministratore.
Prima di poter dire "sì" o "no", è necessario esaminare la posizione di sicurezza generale dell'applicazione web.
La domanda implicita qui è se consentire all'utente amministratore il diritto di modificare la password di qualsiasi utente come violazione della sicurezza. Se qualcuno dovesse abusare dell'account di superutente amministratore (un amministratore legittimo o un malintenzionato), quali altre cose potrebbero eseguire che sono peggiori o peggiori rispetto alla possibilità di modificare la password di un utente casuale? Ad esempio, possono reimpostare l'indirizzo e-mail dell'utente in cui vengono inviate le e-mail di reimpostazione della password? Possono accedere alle informazioni utente sensibili? Se è così, quindi modificare le password non farà più danni e il vettore di attacco è altrettanto facile. (Infatti, a meno che non ci siano dati utente che non sono disponibili nemmeno per il superutente, l'attaccante malintenzionato accede all'account di super-utente è il gioco finale.)
Inoltre, gli effetti collaterali devono essere presi in considerazione. In Windows, se l'amministratore modifica la password di un utente, può impedire l'accesso a dati precedentemente crittografati. Il motivo è perché la password dell'utente viene utilizzata per derivare la chiave di crittografia.
Se dovessi impedire che l'account super-utente sia in grado di cambiare le password, allora credo che - da una prospettiva di amministrazione del sistema (e, sì, un buon servizio clienti) - vuoi comunque essere in grado di consentire un utente legittimo per riottenere l'accesso a un account bloccato o perso. Che si tratti cambiando la password o qualche altro metodo (token singolo) dipende interamente dalla situazione.
Se la situazione è che si desidera essere in grado di impedire (accidentale) uso improprio della funzione da parte di amministratori competenti e non ostili, quindi proteggere le funzionalità sensibili richiedendo (ulteriore) elevazione, prompt, controlli di controllo abbondanti, ecc.
Negromante qui.
Il fatto stesso che tu abbia posto questa domanda mi dice che il tuo metodo di memorizzazione delle password è orribilmente SBAGLIATO .
Questa domanda non dovrebbe nemmeno esistere, perché se hai memorizzato le password in modo sicuro (tramite hash forza crittografica, con sale), tecnicamente non potresti scoprire alcuna password, nemmeno con le tabelle arcobaleno.
Tutto quello che puoi fare è resettare la password, e questo non è certo il lavoro dell'amministratore.
Se memorizzi le password in testo semplice o crittografate, è sbagliato. Un attaccante (potrebbe essere solo un bambino, ma potrebbe anche essere un crimine organizzato un'agenzia di intelligence, possibilmente di uno stato non così bello) che ottiene l'accesso al proprio database (e al codice) può ottenere la chiave (più probabile simmetrica), e scoprire tutte le password di tutti gli utenti.
Gli utenti tendono a inserire lo stesso nome utente e password ovunque, quindi compromettendo il tuo sito web, un utente malintenzionato potrebbe accedere all'account di molti utenti, ad es. Amazon, FB, e-mail, Microsoft, Google Documenti, ecc ...
Memorizzare le password in testo semplice e crittografato è quindi una pessima idea
È concepibile che in determinate giurisdizioni, anche tu (o la tua azienda) sia responsabile dei danni.
Devi sempre memorizzare le password con un algoritmo di hashing lento crittograficamente sicuro che è correttamente salato , nel qual caso è (si spera) tecnicamente impossibile scoprire una password .
Leggi altre domande sui tag passwords password-management privileged-account