2009-07-13 10 views
6

Ho cercato di creare un accesso sicuro per il mio sito che sto sviluppando.Creazione di un accesso sicuro

Non riesco a farlo funzionare, utilizzo database MySQL con PHP.

Posso creare il modulo per aggiungere l'utente e le relative informazioni al database ma non riesco a farlo funzionare con il login.

Quale tipo di crittografia viene utilizzato con HTML <input type="password">?

Come faccio a mantenere l'utente connesso durante la loro visita al mio sito?

I come verificare in modo sicuro se è la password corretta che corrisponde al nome utente?

Ho fatto PHP per forse un anno ora, non ho ancora imparato questa parte, quindi sarebbe bello sapere.

+1

Non so perché hai ottenuto un downvote. +1 –

risposta

11

Che tipo di crittografia viene utilizzato con html < input type = password> ??

Nessuno. L'input è solo mascherato per proteggere dagli attacchi "Looking at the monitor".

Se si desidera sicurezza, trasmettere i dati su HTTPS (HTTP con SSL).

Come mantenere l'utente connesso durante la visita al mio sito?

La maggior parte delle persone utilizza i cookie.

I come verificare in modo sicuro se è la password corretta che corrisponde al nome utente ??

In modo sicuro?

Non utilizzare un server condiviso. Seguire i normali passaggi per mantenere sicuri i dati su quel server. Memorizza le password come hash, non come testo semplice.

Controllare?

Convertire la password inviata all'hash di corrispondenza, quindi confrontare come di consueto. Supponendo di archiviare i dati in un database, basta SELEZIONARE DAGLI utenti DOVE user =? AND password =? e conta il numero di righe che ottieni.

+6

+1 per attacchi "Looking at the monitor" –

+0

quindi, un server condiviso includerebbe i database mysql forniti da Godaddy ?? anche come faccio a rendere il mio sito web https anziché http, coinvolge ssl? – techy

+0

Non posso commentare l'installazione dei sistemi Godaddy. Ho sentito abbastanza storie dell'orrore su quella compagnia per non avvicinarmi mai a loro. Per utilizzare HTTPS acquisti un certificato SSL e quindi installalo ... e il modo in cui lo fai dipende dal tuo server. – Quentin

2

Mi occuperò della parte di protezione della password della domanda.

Non esiste una crittografia incorporata con il tipo di immissione della password. Il browser lo invierà come testo normale proprio come tutto il resto. Esistono due modi per proteggere la password.

Il primo è quello di impostare un challenge/response system ma questo richiederà Javascript per funzionare. Fondamentalmente si prende la password dell'utente, si applica una funzione di hashing se questo è il modo in cui è memorizzato sul server, quindi si prende un token challenge server e si salina il valore della password per un nuovo hash. Il server prenderà il valore della password e applicherà anche la sfida. Se corrispondono alla password è corretta e non c'è modo per nessuno di sapere quale fosse la vera password.Questo richiede javascript perché l'hash deve essere prodotto sul lato client se questo approccio deve essere efficace.

Un'altra opzione, più semplice, è richiedere HTTP per la parte di accesso del sito.

+0

+1 per il metodo sfida/risposta. – Residuum

1

Come David ha affermato che non esiste alcuna crittografia delle password per impostazione predefinita, utilizzare https per mantenere la crittografia.

Per mantenere l'utente connesso, nella pagina di accesso, verificare la propria password rispetto a ciò che è memorizzato nel database. È necessario eseguire l'hash delle password e archiviare la password con hash nel database (vedere crypt). quindi quando l'utente esegue l'accesso, elimina la password dall'utente e la confronta con la password con hash nel database. Quando corrispondono, accedi, altrimenti l'accesso fallisce. Se il tuo db viene mai compromesso, almeno non hanno le password.

Per mantenere l'utente loggato, dopo aver controllato la password, impostare una variabile nella sessione, vale a dire

$_SESSION[loggedin] = true. 

Su ogni richiesta, controlla questa variabile di sessione, e se è vero, consentire l'accesso alla pagina, se è falso, reindirizzare l'utente alla pagina di login con un

header("Location: /login.php"); 
0

ingressi delle password non sono crittografati. Se non si desidera archiviare le password in chiaro (come restituito dal modulo), è necessario eseguire una delle numerose funzioni fornite da php e mysql. controlla php md5, sha1 o mysql encrypt per memorizzare le password.

Quindi, per verificare se è stata immessa la password corretta per accedere, è possibile utilizzare qualsiasi metodo di crittografia sulla relativa voce, recuperare la password con hash dal database e confrontarli. (Inoltre, guarda su salting passwords)

Per avere una sessione di accesso persistente, è possibile utilizzare la variabile $_SESSION di php. o setcookie()

Problemi correlati