Ho creato un login con sessioni e Database, ho anche creato un'opzione con la quale l'utente salva un cookie composto da MD5(username)+MD5(password), per ricordare l'accesso.
DOMANDA: E' sicuro fare così? oppure devo attuare un'altro metodo?
Ho creato un login con sessioni e Database, ho anche creato un'opzione con la quale l'utente salva un cookie composto da MD5(username)+MD5(password), per ricordare l'accesso.
DOMANDA: E' sicuro fare così? oppure devo attuare un'altro metodo?
Il 90% dei problemi di un pc si trova
tra la tastiera e la sedia.
inanzitutto se hai solo gli md5 come riconosci l'utente?
in secondo luogo.. beh sì.. io utente "guidoz" per potermi autenticare come "gm" dovrei conoscere anche la password di gm. Se tu facessi l'md5 del solo username, io potrei fare l'md5 di qualsiasi useername ed entrare
In sostanza.. è la password che protegge davvero... ti basterebbe solo quella (con l'user per poterlo riconoscere).... anche non criptata
in pratica uso questa pratica funzione per capire se l'utente ha il cookie o meno:
Codice PHP:
function islogged() {
global $connessione;
if ($_SESSION['loggatowj'] == 1) {
return true;
} else {
if (!empty($_COOKIE['areawj'])) {
$hashemail = substr($_COOKIE['areawj'],0,32);
$hashpassword = substr($_COOKIE['areawj'],32,32);
$query_wj = "SELECT * FROM wj WHERE MD5(email)='".$hashemail."' and MD5(password)='".$hashpassword."'";
$result_wj = mysql_query($query_wj, $connessione) or die(mysql_error());
$totalRows_wj = mysql_num_rows($result_wj);
if($totalRows_wj == 0) {
setcookie ("areawj", "", time() - 3600);
return false;
} else {
$row_wj = mysql_fetch_assoc($result_wj);
$_SESSION['loggatowj'] = 1;
$_SESSION['idwj'] = $row_wj['id'];
$_SESSION['nomewj'] = $row_wj['nome'];
$_SESSION['emailwj'] = $row_wj['email'];
return true;
}
} else {
return false;
}
}
}
Il 90% dei problemi di un pc si trova
tra la tastiera e la sedia.
mah.. secondo me l'id (che in questo caso è una e-mail) la puoi mettere tranquillamente in chiaro nel cookie.. tanto anche se io la cambio e ci metto la tua non entro s enon ho la password.
Questo è il primo punto...
Il fatto che salvi anche la apssword è giusto, perchè se tu nel cookie salvassi solo un id, io potrei cambiare l'id ed entarre come un'altra persona... ma se c'è un'altra informazione che io non posso conoscere.. allora m'attacco anche cambiando l'id.
E chiaramente se conosco la password l'ultimo dei tuoi problemi è che io possa cambiarla nel cookie.
E a questo punto anche la password potrebbe tranquillamente essere in chiaro... a chi la devi nascondere? al suo stesso proprietario?
Se poi non vuoi lasciare la password nel cookie perchè qualcuno potrebbe rubare il cookie al tuo utente e da lì risalire alla password... allora neanche la password md5 è sicura ^_^
Se vuoi essere paranoico e on lasciare tutto in chiaro, puoi fare così:
id|md5(id+password)
così tu hai l'id per estrarre il mio record dal database (senza fare l'md5 degli id ogni volta).. e quindi fai, solo una volta, l'md5 dell'id e della password e vedi se corrisponde all'md5 nel cookie.
Dall'altro lato, se un attaccante prendesse quell'md5.. difficilmente riuscirebbe a risalire all'originale.
Ancora meglio sarebbe così:
id|md5(tuapassword+passwordutente)
dove la tua password è uguale per tutti ed è una stringa possibilmente alfanumerica un po' complessa. A quel punto anche avendo l'user id e l'md5... un attaccante non riuscirebbe a risalire alla stringa composta dalla concatenzazione delle due password (se anche quella dell'utente fosse "mamma"... cioè una cosa banale, ci sarebbe la tua a complicare il tutto)
![]()
si, ma come faccio poi a trovare l'occorrenza nel database se cripto la password dell'utente insieme ad una mia? la query nn saprei come strutturarla mmm
Il 90% dei problemi di un pc si trova
tra la tastiera e la sedia.
il record lo prendi con l'id.. la password la leggi in corrispondenza dell'id trovato... la estrai e ne fai l'md5 da php..Originariamente inviato da hacker_nait
si, ma come faccio poi a trovare l'occorrenza nel database se cripto la password dell'utente insieme ad una mia? la query nn saprei come strutturarla mmm
a grandi linee hai ragione ... ma non dimentichiamo che IE, ed ultimamente ho visto hacks strani anche per FF, permette di salvare virus, trojan e worms direttamente nella cartella con i cookies, sotto forma di file mascherato.Originariamente inviato da }gu|do[z]{®©
a questo punto anche la password potrebbe tranquillamente essere in chiaro... a chi la devi nascondere? al suo stesso proprietario?
Permettere il salvataggio di utente e password sui cookie, quindi, non è mai una procedura sicura e non a caso i servizi on-line seri non permettono di farlo.
L'unico modo per farlo e stare quasi tranquilli è salvare tali dati con blowfish o qualche crypting serio e tenersi la salt o chiave che sia solo sul server.
Fatto questo solo uno screen reader spia potrà risalire ai dati cryptati del cookie una volta arrivati nella pagina, leggendosi semplicemente la form.
Detto questo ... se non è una banca o non ha dati sensibili, che razzo te ne frega ?salva tutto sui cookie e cavoli loro se perdono i dati
![]()
sì, che poi è quelllo che gli ho consigliato dopo se vuole il livello di sicurezza paranoicoOriginariamente inviato da andr3a
L'unico modo per farlo e stare quasi tranquilli è salvare tali dati con blowfish o qualche crypting serio e tenersi la salt o chiave che sia solo sul server.![]()