È buona o cattiva pratica consentire a un utente di cambiare il proprio nome utente?

112

Ho cercato online e questo sito per cercare ulteriori informazioni sulla sicurezza di questo sito, ma non ho trovato nulla. Nel mio caso particolare, il prodotto è un sito Web, ma penso che questa domanda si applichi a qualsiasi software che ospita un numero elevato di utenti.

So che ci sono numerosi siti Web che consentono di modificare il nome utente, ma allo stesso tempo ci sono molti che non lo consentono. Sono sicuro che alcuni che non lo consentono potrebbero essere solo per semplicità, ma probabilmente anche per la sicurezza.

La mia domanda è proprio come il titolo chiede:

Dal punto di vista della sicurezza, diresti che è una buona o cattiva pratica consentire alle persone di cambiare il loro nome utente?

Al momento non riesco a pensare a nessuna ragione per non permetterlo, dato che è fatto correttamente (cioè rendere impossibile per i nomi utente duplicati, richiedere l'immissione della password corrente per accertarsi che i requisiti della password siano ancora soddisfatti per quanto non contengono nome utente, ecc), ma Non posso fare a meno di pensare che ci sia qualcosa che mi manca.

So che ci sono vantaggi dal punto di vista dell'utente per consentire loro di cambiare il loro nome utente. Un esempio potrebbe essere se impostano il loro nome utente al loro indirizzo e-mail e decidono di utilizzare un indirizzo e-mail diverso successivamente. Invece, sono curioso dei vantaggi rispetto ai rischi per quanto riguarda la sicurezza dell'applicazione e del processo di accesso se permetti loro di cambiare il loro nome utente.

Modifica

Alcune delle risposte sollevano dei buoni punti riguardo ai nomi visualizzati pubblicamente, ma per chiarire, la domanda non riguarda alcun nome di visualizzazione pubblico, ma il nome utente univoco utilizzato per accedere.

    
posta Jeff Y 19.12.2017 - 22:02
fonte

13 risposte

112

Molte persone hanno esaminato le ragioni per non consentire modifiche al nome da un punto di vista della sicurezza e della comunità. Tuttavia, ci sono molti motivi legittimi per consentire modifiche al nome utente, anche se il nome utente è separato dal nome visualizzato , ad esempio:

  • Qualcuno ha cambiato il nome della loro vita reale o il nome con cui preferirebbero essere chiamati, a causa di matrimonio, situazioni familiari, fuga di stalking / molestie / ecc., e così via

    Even in the case of it being simply a username, having to use an old name which carries trauma can further the trauma. Also, it is quite possible for a stalker/harasser to know their target's login credentials, and being able to change both parts of the credential lowers the attack surface; further, monitoring attempts at logging in to an abandoned username allows for building a legal case against a bad agent.

  • Le persone hanno deciso di andare avanti per una transizione di genere

    Being forced to use one's "dead name," even in the context of a private username, is also very traumatic. (I can speak to personal experience on this one.)

  • Le persone hanno un nome utente che non sentono più adatto a loro per qualsiasi motivo

    This has less of an implication for internal usernames but it's still better to err on the side of kindness, in my opinion.

Questi sono tutti importanti per il comfort dell'utente, e in molti casi le persone probabilmente creerebbero comunque un nuovo account con il nuovo nome, quindi potrebbe anche supportarlo.

Evitare l'ingegneria sociale è certamente importante, ma ci sono approcci che aiutano a mitigarlo, come varie forme di verifica (come si vedono su diversi social network), crittografia a chiave pubblica e indicatori di profilo ("nome ultimo modificato N mesi fa ; nome cambiato K volte "). E poiché questa domanda è stata modificata per quanto riguarda i nomi utente interni e non i nomi visualizzati pubblici, tali preoccupazioni non sono nemmeno pertinenti alla discussione.

Inoltre, tieni presente che molte superfici di attacco fornite da qualcuno che cambia il loro nome utente è presente anche per qualcuno che sta semplicemente creando un nuovo account e, se un'opzione di modifica del nome utente non è disponibile, l'utente probabilmente creerà un nuovo account - possibilmente usando la stessa password di quella vecchia e, in caso contrario, fare cose che potrebbero portare a una sicurezza compromessa.

È una buona idea mantenere una pista di controllo delle modifiche al nome utente e non consentire la creazione di nuovi account che utilizzano un nome utente precedentemente utilizzato (almeno se il nome utente è stato utilizzato l'ultima volta nel passato, ad esempio, anno), ma lì Non c'è motivo per cui il nome utente debba mai essere la chiave primaria utilizzata per associare i dati con l'account utente in primo luogo, perché ci sono scopi legittimi per una modifica del nome utente e tutti i record degli account devono essere normalizzati a un ID interno solo astratto nel primo posto.

    
risposta data 20.12.2017 - 05:13
fonte
34

Direi che non sono in grado di cambiare il loro identificatore univoco. Cioè possono cambiare il nome che mostrano, ma quel nome è legato a un numero ID utente invariato (questo renderà anche i tuoi DBA più felici). Mi assicuravo inoltre che gli utenti non potessero cambiare il loro nome in un vecchio nome di un altro utente (per contribuire a mitigare il potenziale di truffa di cui Anders sta parlando). Quindi staresti cercando di archiviare tutti i nomi di un utente a un certo punto.

Potrebbe essere meglio richiedere una modifica del nome utente, gestire casi legittimi (come nel caso dell'email) e non disporre di un metodo automatizzato dall'utente per farlo.

    
risposta data 19.12.2017 - 22:39
fonte
8

We currently use your suggestion regarding individuals that reach out to us requesting a change, but it isn't as scalable due to the manual work and requires us to ask for answers to their security questions for verification.

Questo è decisamente sbagliato. Non solo devi farlo manualmente, ma sei obbligato a dare risposte di sicurezza a tutte le persone che elaborano tali richieste.

Se vuoi mantenere il controllo, allora semiautomaticamente: lascia che l'utente faccia tutto il lavoro preparatorio, cioè, inserisci il nuovo nome, scrivi il motivo (se ti interessa) e rispondi alla domanda di sicurezza. Ora, i ragazzi dell'help desk devono solo concedere o rifiutare la richiesta.

Molti altri motivi a favore e contrari che consentono di cambiare nome utente sono stati forniti nelle altre risposte. Tieni presente che puoi procedere nel modo intermedio: consenti una singola modifica automatica, ad es. Una volta all'anno. Questo è abbastanza generoso da gestire il 99% delle richieste, limitando tuttavia abbastanza da prevenire la maggior parte degli abusi.

    
risposta data 20.12.2017 - 05:02
fonte
8

Come accennato, consentire agli utenti di cambiare facilmente i nomi utente (chiamiamolo "nome visualizzato" per disambiguare) rende più facile agli utenti di evitare le conseguenze di molestie o di truffa agli altri utenti. Se il tuo sito ha un aspetto sociale, potresti considerare se divieti, blocchi, rapporti, cronologie di chat, ecc. Possano portare a un cambio di nome utente (cioè un utente deve essere consapevole che sta parlando con lo stesso account, anche se il nome è cambiato? ).

Un altro punto da considerare è l'anonimato o le preoccupazioni sulla privacy. È abbastanza frequente che qualcuno faccia un account con il loro vero nome e poi, per qualsiasi ragione, si rammarica di attribuire la propria vera identità ad esso. A volte questo accade perché sono stati presi come prepotenti, ma spesso è anche per motivi legittimi, come la condivisione eccessiva di dettagli personali della loro vita, oppure diventano vittime del bullismo. Questa recente domanda mi viene in mente come un esempio diverso:

Ho inserito per errore la password di un sito web come nome utente per un altro sito web

In questo caso, l'invio di un ticket di servizio da sottoporre a revisione da parte di un essere umano o l'autorizzazione di un numero limitato di modifiche al nome dell'account suona come un approccio ragionevole.

    
risposta data 20.12.2017 - 00:53
fonte
8

Sono un po 'sorpreso dal fatto che questo non sia stato sollevato. Ma suppongo che la ragione per cui molti siti non ti permettono di cambiare il tuo nome utente è perché presenta un problema se le informazioni dell'account di un utente vengono rubate, poiché l'attaccante può ora cambiare completamente tutto sull'account.

È senza dubbio più complesso tentare di recuperare un account per un individuo in cui i suoi dettagli sono stati rubati e tutto è stato completamente cambiato. Avere la parte di informazione comune che non cambierà mai rende più facile per un utente fare riferimento al proprio account nel caso in cui dovesse perdere l'accesso ad esso.

Penso che alcune delle altre risposte qui abbiano fornito soluzioni migliori, ma non sono sicuro che molte di esse abbiano toccato quello che stavi chiedendo in merito alle implicazioni sulla sicurezza di consentire il cambio di un nome utente.

    
risposta data 22.12.2017 - 00:33
fonte
6

Direi che stai meglio non permettere agli utenti di cambiare i loro nomi utente, ma dipende molto dal tuo modello di minaccia. Ecco i pro e amp; contro per consentirlo:

Pro:

  • Se le credenziali di un utente vengono compromesse su un altro sito, consentendo agli utenti di modificare il loro nome utente può rendere più difficile abbinare le credenziali dal sito compromesso al tuo sito, rendendo più difficile l'esecuzione di un attacco di riempimento delle credenziali. Ricorda che l'utente che ha cambiato la sua password ha raggiunto lo stesso obiettivo.

Contro:

  • Come accennato in precedenza, rende più facile per gli utenti eseguire attacchi di social engineering l'uno contro l'altro sul tuo sito.
  • Hai aggiunto complessità al tuo sito, che a sua volta aumenta il numero di potenziali bug di sicurezza. Ad esempio, se controlli la presenza di duplicati, ora hai una vulnerabilità di enumerazione degli utenti.
risposta data 19.12.2017 - 22:35
fonte
4

Stai essenzialmente bilanciando due problemi in competizione, con un terzo fattore che entra in gioco. Il primo è la sicurezza per gli utenti del tuo sito, cambiare un nome utente è un modo semplice per ingannare gli altri per truffarli. Il secondo è che la modifica di un nome utente è un modo semplice per ingannare le altre persone per allontanarsi da esse.

Le persone molestate preferirebbero cambiare il loro nome utente in quanto è una sospensione immediata. Le persone che molestano gli altri vorrebbero cambiarle come si può ottenere dalle difese iniziali. E l'altro fattore è che più parti mobili significano più cose da colpire, meno sicure.

La tua prima linea d'azione dovrebbe essere quella di decidere in quale direzione ti attendi qui. Ti stai concentrando sulla prevenzione dei truffatori o stai cercando di rendere l'ambiente il più sicuro possibile? Tenendo presente che creare un ambiente sicuro potrebbe significare non automatizzare un cambiamento, e ci sono altri motivi per cambiare un nome utente, sia buono che cattivo. Questo è per te capire in base a ciò che sai del tuo sito. Il secondo passo sarebbe quello di accertare se è possibile o meno effettuare un impianto sicuro per questo.

A questo punto è un diagramma di flusso. Preferirei automatizzarlo, ma non può farlo in modo sicuro? Non farlo Hai un problema con i truffatori e altri attacchi di social engineering? Non farlo Vuoi rendere più semplice il cambiamento e implementarlo in modo sicuro? Fallo.

Vorrei notare che, come altri hanno suggerito, tenere traccia dei nomi utente è una buona idea anche se nascosta e disponibile solo a te (idealmente nascosta se le modifiche sono per ragioni di sicurezza) e aumentando il controllo di disponibilità del nome utente per la durata di circa tre i nomi utente attraverso il sito sarebbero utili (e qualcos'altro da rendere sicuro).

Infine hai menzionato la scalabilità. Man mano che aumenti, diventa più facile (leggi meno) automatizzare cose che non puoi fare per ragioni di sicurezza e difenditi dagli attacchi in un altro modo, vedi Twitter per un esempio. Se colpisci quel punto, allora automatizza la via, prima è meglio è.

    
risposta data 20.12.2017 - 02:47
fonte
3

Secondo la mia esperienza, consentire un cambio di nomi utente in cui non era pianificato in origine rende l'auditing / logging leggermente più difficile, specialmente nella circostanza inevitabile in cui un dev di anni fa ha deciso di aggiungere il nome utente ma non la chiave primaria a ciascuno voce del registro.

Succede, specialmente quando si assumono sviluppatori amatoriali / in outsourcing - i registri diventeranno inutili che dovrete ricostruire forensi in base a riferimenti incrociati manualmente se le voci di registro non associano il nome utente alla chiave primaria originale al momento dell'attività.

Quindi, prima di abilitarlo, ti consiglio di controllare tutte le soluzioni di registrazione che potresti avere e assicurarti che registrino il pk a fianco / al posto del nome utente in modo da poter tenere traccia dell'identità attraverso le modifiche del nome utente.

    
risposta data 21.12.2017 - 00:28
fonte
3

Secondo me, questa è più una questione di strategia o di architettura che di sicurezza ... Finché ci si assicura di mantenere un identificatore univoco internamente per ogni utente (ad esempio un ID univoco del DB, che non cambierà mai, ma che non deve essere visualizzato da nessuna parte) e una cronologia delle modifiche per utente, gli utenti dovrebbero essere in grado di modificare i loro accessi o nomi utente. Se desideri visualizzare la cronologia delle modifiche nella pagina dell'utente dipende dallo scopo e dall'utilizzo del tuo software.

Personalmente trovo sempre molto fastidioso quei servizi che impongono quel tipo di restrizioni arbitrarie ("non puoi cambiare il tuo nome utente", "non puoi cambiare login", "non puoi riutilizzare le password che hai già usato in passato", ecc.).

Tuttavia, possiamo fare la differenza tra 3 casi (più quello generale):

  1. software offline

  2. servizio intranet

  3. servizio internet

  4. sintesi

1 - software offline

Nel caso di un software totalmente offline, gli utenti dovrebbero essere sempre in grado di modificare i propri dati di accesso. Tutto è locale qui, quindi non vi è alcun motivo per vietare qualsiasi cambiamento.

2 - servizio intranet

Nel caso di un servizio intranet, ci aspettiamo molto probabilmente che gli utenti abbiano un modo semplice per contattare direttamente un amministratore.

Forse il modo più sicuro per modificare l'accesso potrebbe essere una procedura manuale. Probabilmente è anche possibile garantire un modo sicuro di automatizzare la procedura.

Tuttavia, IMHO, gli utenti dovrebbero essere in grado di modificare i propri dati di accesso e l'accesso dovrebbe essere totalmente indipendente dall'ID univoco dell'utente.

3 - servizio internet

Nel caso di un servizio online, penso che il login dovrebbe sempre essere l'indirizzo email dell'utente (o, forse, in alcuni casi, un numero di cellulare, tuttavia, non appena è un Servizio Internet, mi aspetto che il mio utente abbia un indirizzo email e non consiglierei l'uso di un numero di telefono).

In tal caso, certo, gli utenti dovrebbero essere in grado di modificare il loro indirizzo email ogni volta che lo desiderano e, quindi, il loro login (cioè il loro indirizzo email).

Naturalmente, in tal caso, dovresti assicurarti di avere una procedura adeguata, per assicurarti che quando si verifica la richiesta di modifica, c'è un meccanismo che consente di confermare che il richiedente è il proprietario dell'account (email di verifica con link di conferma che ha una data di scadenza, diciamo 24 ore, ma dipende dal tuo caso).

4 - riepilogo

  • gli utenti dovrebbero sempre essere in grado di modificare i loro login
  • l'ID univoco dell'utente deve essere sempre indipendente dal login
  • nel caso di un servizio Internet, evitare "login utente", preferire "login indirizzo email", con una procedura di convalida / conferma
  • in ogni caso, potrebbe essere una buona idea tenere traccia della cronologia delle modifiche ... se lo si visualizza su un "profilo utente" o meno dipende dal caso d'uso specifico
risposta data 21.12.2017 - 08:24
fonte
2

Non vedo alcuna risposta per verificare la domanda più importante:

Il nome utente è un segreto sul tuo sito o no?

Se il nome utente viene visualizzato su una pagina del profilo utente, o come autore su post nei forum o è ricercabile in un elenco membri, non ha funzioni di sicurezza. Pertanto, cambiarlo o no non ha significato per la sicurezza.

Se il nome utente è un segreto, ad es. hai un nome visualizzato diverso, oppure mostra il nome completo dell'utente, ma usa un nome breve o un alias per scopi di accesso - se il nome utente è un segreto di quanto impatta la sicurezza in quanto un utente malintenzionato deve conoscere sia il nome utente sia la password per accedere a un account.

Tuttavia, poiché gli utenti tendono a riutilizzare i nomi utente e generalmente non considerano i nomi utente come segreti nello stesso modo in cui lo fanno con le password, il nome utente è un segreto debole. Inoltre non ha importanza in molti attacchi (MtM, keylogger, phishing, hacker DB, ecc. Ecc.)

Quindi, anche se il tuo nome utente è un segreto, i vantaggi dell'usabilità (delineati in altre buone risposte) superano di gran lunga le considerazioni sulla sicurezza.

    
risposta data 22.12.2017 - 02:19
fonte
1

Se autorizzi gli utenti a utilizzare gli indirizzi email come nomi di accesso, devi consentire loro di cambiare il loro login:

  • Se qualcuno lascia un'organizzazione, potrebbe perdere immediatamente l'accesso a quell'indirizzo e il nuovo indirizzo potrebbe essere assegnato a qualcun altro altrettanto rapidamente . (Ho dovuto cambiare ISP senza preavviso quando si sono resi conto che non potevano connettersi alla mia nuova casa dopotutto, gli indirizzi email sono diventati disponibili per gli altri lo stesso giorno). Anche se utilizzi solo l'indirizzo come nome di accesso e mai come per le email effettive, questo è un vettore significativo e non necessario per gli attacchi di social engineering.
  • Se consenti loro di cambiare l'indirizzo email che utilizzi per l'invio di e-mail mentre ancora esegui il log con il vecchio indirizzo che è confuso, male UX e condurrà alle chiamate di supporto.
risposta data 21.12.2017 - 09:55
fonte
1

Abbiamo bisogno di guardare alcune delle possibili opzioni:

Perché l'utente desidera modificare il proprio nome utente?
-personalization
-hanno uno stalker

Perché vuoi che l'utente cambi il nome utente?
-versatilità / personalizzazione porta clienti fedeli

Perché l'utente non vuole che gli altri utenti cambino nome utente?
-la scusa di OG hipster "ero il primo soccerkid96 non ce ne sono altri"
-non riesco a pensare a nessun altro motivo

Perché non vuoi che l'utente cambi il nome utente?
-qualcosa tipo di frode sull'identità? più account di phishing denominati xXP0rn $ L @ yerXx, detentore del record mondiale con il punteggio più alto
-potrebbe essere utilizzato come backdoor per informazioni o possibilmente una vulnerabilità per sovraccarico del database o DDoSing

Per evitare la maggior parte dei problemi indesiderati, consiglierei un identificatore statico univoco per tutti gli account (non correlati al nome dell'account pubblico), pagare per cambiare nome utente, 1 cambio di nome utente per 5000 anni, ecc.

    
risposta data 27.12.2017 - 20:04
fonte
0

Ci sono parecchi punti a favore e contro di esso.

Ad esempio, un utente potrebbe voler cambiare il nome per evitare di essere riconosciuto, perché ha notato che googling il suo nome utente dal sito A mostra il suo profilo sul sito B.

D'altro canto c'è un punto sul non permettere di cambiarlo, così le persone possono riconoscerlo di nuovo sul tuo sito. Pensa a un forum con un troll famoso. Le persone sanno come gestirlo e non gli danno attenzione. Fino a quando non cambia il suo soprannome. Ovviamente questa non è una vera protezione dato che può registrare un altro nome utente, ma evita il buse cambiando il nome per ogni post.

Se il nickname è una specie di chiave primaria, non puoi permettere di cambiarlo. Pensa a un indirizzo e-mail o a un jabber id. Alcuni siti consentono ancora di cambiare il nome e devi fare attenzione a farlo. Se si considera la modifica del nickname di Twitter, è meglio registrare il vecchio nome in seguito per evitare di essere associato al nuovo utente. Questo è un punto per bloccare il nome utente per uso futuro dopo la cancellazione dell'account.

Un nome utente fa parte del processo di accesso, quindi cambiarlo potrebbe interrompere un attacco a forza bruta. A seconda del sito anche senza l'autore dell'attacco sapendo se la password è sbagliata o se l'intero utente non esiste.

Alla fine penserei che un nome utente dovrebbe essere unico e probabilmente non modificabile e bloccato dopo la cancellazione dell'account, ma è necessario fornire un modo per definire un nome visualizzato che è visualizzato in modo più visibile rispetto all'handle dell'account.

Dai un'occhiata a SO, che usa ID o buon vecchio ICQ che usa uno schema numerico. Le persone devono utilizzare il nome visualizzato nell'elenco dei contatti, perché chi ricorda tutti gli UIN dei suoi amici?

Finalmente la tua decisione non ha bisogno di essere definitiva. È sempre possibile passare all'altro modello. Rendere i nomi utente fissi modificabili non dovrebbe essere un grosso problema, la fissazione dei nomi utente che erano modificabili richiederà probabilmente qualche spiegazione per i tuoi utenti.

    
risposta data 22.12.2017 - 14:14
fonte