Inserisci il campo della password nel database, sfortunatamente nell’amministratore?

Sto usando Advanced Custom Fields per creare una sorta di database personale dei miei accessi. ACF ha un tipo di campo password che funziona benissimo, ma memorizza i dati in testo normale nel database. Quindi ho trovato questo argomento che ci permette di cancellare la password prima di inviarla al database:

function at_vault_encrypt( $value, $post_id, $field ) { $value = wp_hash_password( $value ); return $value; } add_filter('acf/update_value/type=password', 'at_vault_encrypt', 10, 3); 

Questa funzione utilizza la funzionalità wp_hash_password e la applica al filtro di aggiornamento ACF. Il nocciolo della mia domanda è questa: posso annullare l’hash quando i dati vengono mostrati nel back-end?

Il problema è quando salvi un object con password e lo riapilo, mostra la password con hash invece di quella che ho inserito. Questo rinuncia al punto intero di notare le password se non riesco a leggerle in seguito.

Quindi ho pensato che potevo “de-hash” le password, ma non mi sembra un’opzione valida. Forse questo sta portando troppo a lungo WordPress e non può essere fatto correttamente, è solo una misura di sicurezza in più per non avere i campi salvati in chiaro nel database.

(PS: non sono qui per avviare una discussione sulla sicurezza dei dati. Sono ben consapevole dei gestori di password e di altri (forse modi più sicuri) per farlo).

Solutions Collecting From Web of "Inserisci il campo della password nel database, sfortunatamente nell’amministratore?"

Per definizione, l’hashing è un’ecnryption a senso unico , quindi non può essere invertito (forse un super hacker può farlo, ma dovrebbe essere molto difficile o quasi imansible da fare). Non è un bug, un problema o qualcosa del genere, è il comportamento previsto e come ogni sito dovrebbe funzionare.

Molte persone usano la stessa password su diversi servizi, quindi nessuno, incluso il proprietario del sito, dovrebbe essere in grado di conoscere la password di un utente. Immaginando che il sito sia compromesso, se le password possono essere invertite, l’hacker potrebbe avere accesso a tutte le password e potenzialmente non solo per il tuo sito. O semplicemente il proprietario di un sito potrebbe utilizzare la password dell’utente per accedere all’account dell’utente in altri siti.

Quindi, se hai una password con wp_hash_password() , o qualsiasi altro metodo hashgin, e non puoi decodificarlo, è esattamente come è stato progettato.

Potresti essere interessato alla crittografia anziché all’hashing, un metodo che può essere invertito solo se sono note le regole applicate per eseguire la crittografia, in genere utilizzando le chiavi segrete. Puoi farlo in PHP, ad esempio, con mcrypt_encrypt() / mcrypt_decrypt() . Ma non è sicuro per gli utenti, perché il proprietario del sito può conoscere la sua password; usalo se hai bisogno di mantenere la riservatezza ma non l’integrità.

Oppure potresti essere interessato alla codifica, ma la codifica è semplicemente testo in un altro formato che un essere umano potrebbe non leggere direttamente, ma solo perché non è abituato ad esso, non perché sia ​​sicuro o criptato in qualche modo, per questo motivo può essere facilmente decodificato convertendo di nuovo nel formato originale (ovvero, si ottiene zero sicurezza).

Alcuni metodi di codifica pronti all’uso in PHP:

  • str_rot13() ( fallo due volte e ottieni l’originale )
  • base64_encode() / base64_decode()
  • gzencode() / gzdecode()
  • E molto altro ….

Gli hash non sono pensati per essere reversibili. Invece, potresti usare uno schema di codifica come Base64 per memorizzare le tue informazioni:

 // Encode function at_vault_encode( $value, $post_id, $field ) { return base64_encode($value); } add_filter('acf/update_value/type=password', 'at_vault_encode', 10, 3); // Decode function at_vault_decode( $value, $post_id, $field ) { return base64_decode($value); } add_filter('acf/load_value/type=password', 'at_vault_decode', 10, 3); 

Tuttavia, è importante notare che questo modo di memorizzare le password è altrettanto insicuro quanto la memorizzazione delle stringhe in testo semplice.