Cum criptează WordPress parolele?

24 oct. 2011, 23:53:09
Vizualizări: 44.2K
Voturi: 7

Posibilă Duplicare:
Cum să validezi parola generată de WordPress din baza de date folosind PHP?

Lucrez cu un site făcut în WordPress și trebuie să adaug câteva componente în afara WordPress-ului pentru a verifica autentificarea utilizatorilor, dar nu pot găsi cum criptează WordPress parolele înainte de a le scrie în baza de date...

Am încercat cu md5 dar nu este...

Știe cineva cum să verific parola în afara WordPress, fără a folosi plugin-urile/verificatoarele sale, doar cod PHP simplu?

2
Comentarii

Închid această discuție ca fiind un duplicat al întrebării la care @SharkTheDark are de fapt posibilitatea de a accepta răspunsuri...

EAMann EAMann
25 oct. 2011 05:58:04

este mai bine să verifici aici pentru mai multe informații. http://www.kvcodes.com/2016/09/wordpress-password-hash-generator/

Kvvaradha Kvvaradha
17 sept. 2016 10:18:18
Toate răspunsurile la întrebare 3
2
11

Biblioteca de criptare a parolelor se află în /wp-includes/class-phpass.php. Aceasta este Platforma portabilă PHP pentru hashing-ul parolelor.

24 oct. 2011 23:56:50
Comentarii

Poți scrie câteva exemple despre cum să-l folosești? Deoarece este din nou un Plugin WP, nu PHP clar cum am cerut, dar dacă poți scrie cum să-l folosești în interiorul PHP va fi util...

SharkTheDark SharkTheDark
25 oct. 2011 00:21:13

Acesta nu este un plugin WordPress. Acesta este un fișier PHP standard care este inclus în framework-ul WordPress. Pur și simplu îl incluzi într-un nou fișier PHP, creezi o instanță și îl folosești.

John Watson John Watson
25 oct. 2011 00:40:06
0

Se pare că doriți să folosiți cod extern pentru a valida numele de utilizator/parole împotriva bazei de date WordPress. Dacă este corect, veți petrece mult timp reinventând roata. Dar pentru un bun exemplu despre cum să faceți acest lucru folosind PHP direct, este o idee bună să aruncați o privire asupra funcțiilor de bază WordPress care fac deja acest lucru.

Un exemplu concret, `wp_check_password()':

function wp_check_password($password, $hash, $user_id = '') {
    global $wp_hasher;

    // Dacă hash-ul este încă md5...
    if ( strlen($hash) <= 32 ) {
        $check = ( $hash == md5($password) );
        if ( $check && $user_id ) {
            // Regenerează hash-ul folosind noul sistem
            wp_set_password($password, $user_id);
            $hash = wp_hash_password($password);
        }

        return apply_filters('check_password', $check, $password, $hash, $user_id);
    }

    // Dacă hash-ul stocat este mai lung decât un MD5, presupunem
    // noul stil de hash portabil phpass
    if ( empty($wp_hasher) ) {
        require_once ( ABSPATH . 'wp-includes/class-phpass.php');
        // Implicit, folosește hash-ul portabil din phpass
        $wp_hasher = new PasswordHash(8, TRUE);
    }

    $check = $wp_hasher->CheckPassword($password, $hash);

    return apply_filters('check_password', $check, $password, $hash, $user_id);
}

În primul rând, WordPress verifică dacă parola hashată a utilizatorului folosește încă vechiul sistem MD5 pentru securitate. Acest lucru este pentru a păstra compatibilitatea înapoi la actualizări. Dacă parola este MD5, atunci WordPress o va înlocui automat cu un nou hash folosind noul sistem (apelul la wp_set_password()). Dacă nu este MD5, atunci WP trece la noul sistem de hashing.

Mai întâi, includem Portable PHP Hashing Framework (deja menționat de @John Watson într-un alt răspuns) și creăm o instanță a acestuia, stocând-o în variabila globală $wp_hasher.

Apoi trecem parola în text simplu și hash-ul pentru a o verifica, folosind metoda CheckPassword() a bibliotecii.

Dacă doriți să folosiți acest lucru într-o bibliotecă externă, va trebui mai întâi să include/require biblioteca, apoi să o instanțiați, apoi să transmiteți parola în text simplu și hash-ul acesteia. Deci niște pseudo-cod netestat...

function validate_password( $plaintext, $hash ) {
    require_once( 'class-phpass.php' );
    $hasher = new PasswordHash(8, TRUE);

    return $hasher->CheckPassword( $plaintext, $hash );
}
25 oct. 2011 00:39:59
1
require_once( '/calea/catre/wp-includes/class-phpass.php' );
$wp_hasher = new PasswordHash( 8, TRUE );
$parola = 'swordfish';
$parola_criptata = $wp_hasher->HashPassword( $parola );
25 oct. 2011 00:36:25
Comentarii

Este posibil să hash-uiți și parola paginii protejate în baza de date?

Samuel Samuel
31 ian. 2018 17:23:35