Afisează utilizatorului parola lui

24 apr. 2013, 23:44:26
Vizualizări: 13.6K
Voturi: 3

Am câteva scripturi automate care rulează pentru a notifica utilizatorii despre anumite actualizări ale aplicației etc. și pentru unul în special, trebuie să pot afișa user_login și parola utilizatorilor.

Cum pot afișa utilizatorului parola lui dacă este criptată?

3
Comentarii

Nu le poți arăta parola, este criptare unidirecțională. Este concepută astfel intenționat.

t31os t31os
24 apr. 2013 23:54:04

Aceasta este probabil o practică oribilă, dar ai putea să o interceptezi când utilizatorii se înregistrează și să o salvezi pentru uzul tău ulterior.

montrealist montrealist
25 apr. 2013 00:09:14

Această întrebare nu ar fi trebuit să primească voturi negative doar pentru că cineva presupune că OP urmărește ceva dubios - asta pare să se fi întâmplat, deoarece întrebarea nu este atât de prost formulată în comparație cu altele... aceasta este părerea mea oricum - dar poate există ceva în meta pe care nu l-am văzut

byronyasgur byronyasgur
20 aug. 2015 02:10:27
Toate răspunsurile la întrebare 2
0

Parolele utilizatorilor sunt stocate în baza de date sub forma a ceea ce se numește un hash. hash-urile nu sunt reversibile, chiar dacă cunoști hash-ul și mecanismul folosit pentru a-l crea. Singura modalitate de a "decripta" un hash este să iei o parolă, să o transformi în hash, să o compari cu hash-ul țintă și să încerci din nou... iar și iar până când găsești o potrivire. Dacă te gândești bine, nu este vorba cu adevărat de decriptare. Este pur și simplu o încercare de forță brută prin încercări și erori.

Parola în text simplu nu este niciodată salvată și nu ar trebui să încerci să o salvezi, deoarece aceasta subminează securitatea site-ului și, deoarece oamenii tind să refolosească parolele, securitatea multor alte site-uri de asemenea.

25 apr. 2013 00:15:24
1

Teoretic, acest lucru ar putea fi realizat prin salvarea parolei utilizatorului în altă parte, atunci când acesta o actualizează.

Rețineți că acest tip de abordare este aproape întotdeauna nerecomandabilă.
În majoritatea cazurilor, există o abordare arhitecturală mai bună care face inutilă afișarea parolelor în text simplu.

Cu toate acestea, dacă trebuie neapărat să o faceți, iată cum s-ar putea realiza:

function wpse_97127_save_passes( $errors, $update, $user )
{
    if (
        empty( $errors->errors ) &&
        ! empty ( $_POST['pass1'] )
    ) {
        /* dacă trebuie să o salvați într-o formă reversibilă, măcar nu o salvați în text simplu */
        $pass = base64_encode(
            mcrypt_encrypt(
                MCRYPT_RIJNDAEL_256,
                md5(AUTH_KEY),
                $_POST['pass1'],
                MCRYPT_MODE_CBC,
                md5(md5(AUTH_KEY))
            )
        );
        // faceți ceva cu $pass, de exemplu salvați-o undeva
    }
}
add_action( 'user_profile_update_errors', 'wpse_97127_save_passes', 0, 3 );

Ceea ce este salvat mai sus poate fi inversat astfel:

$pass_from_db = $wpdb->get_results( /* preiați parola criptată, dar reversibilă din baza de date */ );
$pass = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_256,
        md5(AUTH_KEY),
        base64_decode($pass_from_db),
        MCRYPT_MODE_CBC,
        md5(md5(AUTH_KEY))
    ),
    "\0"
);

Vă rugăm să nu faceți acest lucru în medii de producție cu conturi de utilizatori individuale fără consimțământul sau cunoștința acestora. Acest lucru nu ar constitui doar o practică proastă, ci și un act lipsit de etică.

Eu folosesc abordarea de mai sus într-un singur caz, pentru un rol specific de utilizator, ale cărui capabilități sunt limitate, noii utilizatori sunt întotdeauna configurați de un administrator sau alt rol superior, iar parola este partajată inițial cu mai multe persoane.
Și totuși, nu mă simt bine în legătură cu asta.

25 apr. 2013 01:23:23
Comentarii

Am găsit acest lucru util pentru stocarea datelor în format criptat, dar reversibil. Sunt de acord că probabil nu este o idee bună pentru parole, totuși.

hazrpg hazrpg
7 sept. 2019 17:12:42