Newsgroup: it.comp.www.php
Titolo: Login con PDO

Salve,
 
stavo dando un'occhiata a questo sito: 
https://www.9lessons.info/2016/04/php-login-system-with-pdo-connection.html
 
 
Il file config.php contiene i dati per l'autenticazione al database 
mentre non ho capito come il codice html per il login riesca a leggere i 
dati di login e password contenuti nella tabella users di esempio!
 
Saluti.
^Bart

 dati di login e password contenuti nella tabella users di esempio!
 
L'HTML non deve mai sapere login e password nel DB.
 
L'HTML passa login e password inseriti dall'utente a PHP, che critta la 
password e poi cerca nel DB se esiste qualcosa con quello specifico 
login E quella password crittata. Se esiste è loggato, altrimenti no.
 
Quel codice è relativamente insicuro, Consiglio su usare password_hash() 
al posto di hash()
 
https://www.php.net/manual/de/function.password-hash.php
 
 
https://stackoverflow.com/questions/30279321/how-to-use-password-hash
 
 
Questo permette non solo di avere livelli multipli di hashing (e quindi 
rendere più costoso decrittare le password), ma anche di aumentare il 
livello di crittazione mantenendo la compatibilità con le password già 
salvate nel DB.
 
Bye.

 ha scritto:

è più sicuro password_hash , sh1 o md5?
 
Enrico 
 

 è più sicuro password_hash , sh1 o md5?
 
È una domanda trabocchetto? :D
 
md5 è ormai considerato insicuro da un pezzo. Ci sono rainbow tables che 
craccano praticamente qualsiasi password.
 
sha1 ancora non ha rainbow tables complete (AFAIK), ma un certo numero 
di password sono craccabili facilmente, e con l'aumento della potenza 
dei computer (e delle GPU) diventerà sempre più semplice un attacco di 
brute force.
 
password_hash applica diversi hash in sequenza, quindi per craccare la 
password devi applicare gli stessi hash, nella stessa sequenza, per lo 
stesso numero di volte. Se applichi, per esempio, 20 hash, anche se sono 
banali md5 stai già rendendo 20 volte più lento il processo di brute force.
 
Per come sono salvati gli hash nel DB, se chiami password_verify su una 
password "vecchia" la verifica lo stesso, e se ci chiami 
password_needs_rehash ti dice anche se devi aggiornarla.
 
Quindi sì, password_hash è più sicuro di qualsiasi algoritmo di hashing 
preso da solo, proprio perché ne applica più di uno :)
 
Bye.

 hashing preso da solo, proprio perché ne applica più di uno :)
 
grazie .. :) 
 
Enrico 
 

 Bye.
 
Saluti!
^Bart

 Bye.
 
 
Ciao, il modulo bcrypt di postgres come ti sembra rispetto ad usare php 
(quindi leggere comunque il record per poi controllare la password con la 
funzione PHP piuttosto che fare la query direttamente e scaricare il dato 
solo se la password č esatta)?
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
 
www.robyt.eu
 
 

 solo se la password è esatta)?
 
Premettendo che non sono esperto di crittazione, e quello che so l'ho 
imparato un po' sulla mia pelle, un po' sulla pelle degli altri... :)
 
bcrypt mi pare si basi sullo stesso principio di password_hash (anzi, è 
il viceversa): hashare e re-hashare più volte, in modo da rendere 
costoso il tentativo di cracking.
 
Quindi a livello di sicurezza penso siano equivalenti (a parità di 
algoritmo di hashing e di costo).
 
Il vantaggio di usare password_hash da PHP è che puoi usare 
password_needs_rehashing per verificare se devi aggiornare la password, 
e avendo la password in chiaro in una variabile PHP, è semplice farlo al 
volo e salvare la nuova password nel DB, mentre con bcrypt fatto da 
Postgres non so se/come si possa fare.
 
Bye.