2010-09-19 16 views
13

Aggiungo una funzionalità di "modifica password" al mio webgame http://ninjawars.net, che al momento ha password fisse (e in sostanza non cambia mai).Quali misure di sicurezza dovrebbero essere prese quando si crea la funzionalità "cambia la password"?

Voglio evitare di fare un casino, quindi mi piacerebbe essere sicuro di avere le basi di sicurezza di base coperte.

Facendo quello che posso tirare da modo di fare le cose di Facebook, alcuni punti che punti chiave da ricordare sono:

  • Richiedi vecchia password (ovviamente).
  • Confermare la nuova immissione della password due volte.
  • disconnettere l'account (solo su tutte le altre pagine, in qualche modo)?
  • Richiede una lunghezza della password sicura & che la password soddisfi tutti i [inserire vari criteri qui] necessari per le password su ciascun sistema specifico.
  • È necessario che la nuova password sia diversa dalla vecchia password.
  • Prevenire più tentativi di modifica della password.

Facebook anche:
- Richiede una nuova password di essere diversa dalle password precedenti. (sembra un uso del caso limite)

Queste sono solo le politiche che posso raccogliere dall'interfaccia utente esterna del sistema di account di Facebook. Quali altri punti di sicurezza devo coprire quando fornisco un sistema di "cambio password"?

Edit: Nel mio caso specifico ho intenzione di essere relativamente permissiva con la [inserire vari criteri] per quello che i personaggi dovranno andare nella password stessa. Il mio sito non è una banca, se un giocatore vuole usare la password "password1", allora dovrebbero aspettarsi che il loro account venga preso in consegna dai loro amici. MY FOCUS d'altra parte, si sta impegnando a garantire che il mio sito impedisca qualsiasi opportunità di "acquisizione ostile" tramite qualsiasi tipo di insicurezza nel sistema di modifica della password .

Più buoni punti delle risposte qui sotto:

  • Invia notifica di modifiche di password per e-mail dell'utente.
  • Tenere il cambio di e-mail e il cambio di password dipendono l'uno dall'altro.
  • Utilizzare una connessione crittografata sicura (https) per tali modifiche.

risposta

8

Tenere la modifica della password e le eventuali modifiche all'indirizzo e-mail separate. In questo modo chiunque voglia cambiare o deve conoscere entrambi.

Quando l'utente richiede una password, cambia il suo indirizzo e-mail al collegamento alla pagina. Questo confermerà che sono i proprietari dell'account e li avvisano se qualcuno sta tentando di accedere al proprio account. Quindi, quando la password è stata cambiata, invia loro una e-mail di conferma.

+0

Ah, potrebbe essere meglio della mia attuale soluzione, che è quella di archiviare l'e-mail principale indefinitamente e le e-mail in caso di richieste di modifica dell'account, in modo che nessuno possa hackerare, cambiare l'e-mail e cambiare la password, evitando l'utente dall'essere in grado di accedere all'account anche tramite la reimpostazione della password. – Kzqai

1

Penso che dovresti anche controllare se la password non è la stessa del login. Alcuni utenti lo fanno, credimi.

+0

Beh, questo rientrerebbe nel regno di assicurarsi che i giocatori -password- stessa siano una buona password, che è un argomento senza fine che ho visto affrontato molte volte su questo sito. Tuttavia, non sono stato in grado di trovare consigli su come proteggere il sistema "cambia la tua password". – Kzqai

1

Dipende molto dal tipo di informazioni che vengono protette dalla password. Ad esempio, il requisito della password se si dispone di informazioni finanziarie dell'utente dovrebbe essere molto diverso rispetto a se si ha solo il proprio nome o qualcosa del genere. Inoltre, tieni presente che i requisiti di password dittatoriali incoraggeranno solo gli utenti a creare password non sicure che soddisfano i requisiti.Dovresti avere un limite abbastanza alto sul numero di caratteri che permetti nella password (se gli utenti vogliono rendere le loro password più forti, lasciali). È inoltre necessario consentire agli utenti di utilizzare sia maiuscole che minuscole, consentire loro di utilizzare le cifre e inoltre consentire loro di utilizzare i simboli nella password.

Per richiedere che la password sia sufficientemente sicura, è necessario assicurarsi che non sia identica alla password precedente tranne che per una cifra (es. Incrementare una data in una password), è necessario assicurarsi che non sia nella parte superiore XXX elenco di password comuni (ad es. non consentire "password1"), è necessario assicurarsi che la password non contenga il nome utente o l'indirizzo e-mail dell'utente. Nel modulo di modifica della password, è necessario avvisare gli utenti di non utilizzare la stessa password utilizzata per il proprio indirizzo email (o qualsiasi altro account che si connettono al proprio sito Web), anche se ovviamente non si deve tentare l'accesso a tali servizi connessi controllare questo.

+3

Trovo che questi requisiti siano incredibilmente arbitrari senza fornire molta più sicurezza. Per un gioco, la mia opinione sui requisiti della password è praticamente nulla. Non fidarti dell'input dell'utente per nulla oltre l'esperienza di gioco dell'utente, indipendentemente dal fatto che abbia effettuato l'accesso legittimo o meno, e assicurati di non essere ritenuto responsabile per i danni causati dalla sua password in fase di crack. Quindi non sono affari tuoi e i tuoi utenti non si arrabbieranno con te per requisiti arbitrari. In breve, se il server viene influenzato negativamente dall'account di un utente che viene violato, hai già fallito. –

+0

Questo è (quasi) esattamente la posizione che ho già preso con le password sul sito. Le password sono protette con sicurezza (8 iterazioni), sicurezza sul sistema di password stesso, lunghe passphrase consentite ... ... ma non un elenco enorme/grottesco di requisiti sulla scelta della password dell'utente. Ho intenzione di aggiungere un js "questo è quanto forte o debole è la tua password" metro vicino ai campi delle password, ma non forzerò gli utenti casuali del mio webgame a usare password non memorizzabili come "& (& fa87 87j ljcow "a meno che scelgano. Non voglio che il mio sistema sia la causa di un'acquisizione di account." – Kzqai

+2

Cosa significa "hash sicuro (8 iterazioni)" in dettaglio? Perché non solo 1 iterazione usando un hash forte algoritmo? –

0

Stavo pensando a questo problema oggi.

Invece dei normali requisiti di complessità, penso che sarebbe interessante scaricare una delle tabelle arcobaleno MD5 liberamente disponibili e inserire tali password in un database NoSQL. Quindi, quando un utente va a impostare la propria password, prova a cercare la password che scelgono. Se lo trovi, rifiuta quella password.

A scala, questo potrebbe essere fatto con solo uno o due scatole di hosting dedicato un servizio di ricerca, dal momento che l'impostazione/modifica di una password è un'attività come poco frequenti.

+1

Oh, è grandioso, ho solo bisogno di cambiare la mia password ogni tanto a DDOS il suo server. :) –

2

Una cosa che vedo di tanto in tanto è quello di inviare una e-mail automatizzata per l'e-mail in archivio avvisa che la modifica della password. Ciò darebbe una possibilità/collegamento per il destinatario di annullare le modifiche se fossero state fatte in modo non intenzionale o malizioso. Ovviamente questo richiederebbe un periodo di preavviso simile per cambiare gli indirizzi e-mail per fornire ulteriore sicurezza.

+0

Eccellente, grazie. – Kzqai

2

ho notato nessuno ha ancora suggerito questo, o mi manca alcune delle sottigliezze di risposta di altri.

consentire solo la modifica della password solo se l'utente conosce una "stringa segreto" che sarà inviato al proprio indirizzo di posta elettronica quando richiedono una modifica della password. Per praticità, è possibile rendere questa "stringa segreta" come un URL, in modo che possano semplicemente fare clic rapidamente sulla loro e-mail. Ciò garantisce che la persona che richiede il cambio di password possa anche accedere all'e-mail registrata (le persone tendono ad essere più rilassate con il proprio account di gioco rispetto al proprio indirizzo di posta elettronica privato).

Come ha accennato ChrisF, si dovrà garantire che la persona non può sia cambiare la password ed e-mail allo stesso tempo. Dovrai anche assicurarti che la modifica dell'email richieda la conoscenza della password corrente (probabilmente non dovresti richiedere che l'utente possa accedere alla sua vecchia e-mail per leggere una "stringa segreta", poiché il motivo principale per cui si modifica l'indirizzo e-mail è perché perdere il loro vecchio indirizzo email).

2

Una svolta interessante che vorrei è se entro un tempo molto lungo della password, per favore non mi costringono a includere alcuni tipi specifici di caratteri. Molti sistemi richiedono combinazioni davvero intricate di lettere, lettere maiuscole, numeri e caratteri speciali che inevitabilmente finiscono per creare una password "approvata" di 6 caratteri quando tutto ciò che volevo era 35 caratteri in maiuscoletto, ma che era stato rifiutato per essere "insicuro".Hah ^^

Inoltre, se si utilizza una libreria di classi, un framework o un modello con la funzionalità di codice effettiva integrata, utilizzarlo anziché eseguire il rollover. In effetti, anche se non lo sono, guardate componenti aggiuntivi ben collaudati o soluzioni esterne (OpenId?): La sicurezza è difficile e uno dei peggiori posti per reinventare le ruote in imo.

+0

Odio i siti che non accettano le mie password esattamente in questa situazione. Se riesci a crackare "b9r7idhkeuumaedfa9mpwuphetmgnfkh7uak" attraverso la forza bruta, quindi includere un carattere non alfanumerico non renderà più sicuro. –

+0

Come ricordi questa password ?? – Philippe

+0

Io uso una frase! Come "Oggi ho intenzione di scuotere di nuovo il mondo!" o quant'altro ... molto facile da ricordare, molto veloce da digitare, quindi è difficile da spaccare. Ma odio dover infondere numeri in esso, è solo stupido se è abbastanza lungo ^^ –

4

Questo è probabilmente ovvio, ma ricordarsi di eseguire l'intera procedura di modifica della password tramite una connessione crittografata (HTTPS).

Problemi correlati