Quindi, ho imparato che il nuovo in PHP 5.5 è password-hash () che funziona molto come crypt (). Che è più sicuro (più lento) di md5 () o sha1 (). La stringa del risultato è algo + hash + salt, che può essere passata così com'è per password-verify () per verificare la password. Finora ho capito come funziona.
Alcune domande del giorno del giudizio che rimangono:
Q1) Qual è il nome del formato / protocollo / convenzione risultato?
Q2) Quello che non ottengo comunque è che tutto il sale è incluso nel database. Se un badguy® dove ottenere questi, ha tutti le parti del puzzle. In passato, ho imparato a mettere (in parte) il sale al di fuori del database: in origine, persino di basarlo su valori ram / system / hardware quindi non è nemmeno su disco. Perché questo non è facilitato, o come dovrei? Ovviamente potrei fare un doppio hash con un sale diverso, o c'è un modo migliore?
Q3) Inoltre, nella mentalità apocalittica che richiede la sicurezza, credo che il single-point of failure password_hash () sarà un target di alto valore e potrebbe facilitare gli attacchi MITM in modo più semplice rispetto alla più criptata self-contained ( ). Immagino che scrivere un algo "cattivo" e impostarlo come PASSWORD_DEFAULT sarebbe più semplice che alterare crypt (). Non ho ancora esaminato il codice / i moduli di back-end di PHP, solo speculando.
Considerazioni benvenute. La risposta accettata sarà quella che ottiene il massimo voto / censimento per le domande 2/3 entro una settimana al massimo, e ha la domanda 1 verificabile corretta.