În introducere sa menționat că există două abordări pentru verificarea drepturilor: este "verificarea drepturilor utilizatorilor" și "numerele de o singură dată" care completează acest control.
"Numerele unice" reprezintă un anumit jeton în WordPress - un șir creat accidental de 10 caractere, de exemplu bec698e7ea. care poate fi repetată pentru o perioadă scurtă de timp (24 de ore). Ie puteți crea și verifica acest număr numai în 24 de ore, după care aceeași operație va returna un alt număr.
Pentru mai multe informații, consultați descrierea wp_create_nonce ()
Exemplu de muncă Nonce
Am intrat în panoul de administrare, în setări, când ne-am conectat, a fost generat un formular, unde unul dintre câmpuri este o valoare "nonce". Am schimbat datele și am făcut clic pe butonul "Salvați". La procesarea datelor, pe lângă verificarea drepturilor de acces (current_user_can ()), WordPress verifică dacă numărul nonce converge. Dacă nonce nu converge, atunci cererea de salvare a datelor eșuează.
Nu observăm aceste controale nonce, pentru că, de obicei, totul se întâmplă rapid. Dar dacă, de exemplu, accesați pagina de setări din panoul de administrare, așteptați 24 de ore și apoi încercați să salvați datele, apoi modificările nu vor fi salvate, deoarece verificarea nonce nu va fi trecută.
De ce să bifați "numere unice"?
Pentru a forța browserul administratorului să treacă prin acest link, există moduri diferite.
De exemplu, creați o pagină și utilizați acest cod în ea:
Sau, de exemplu, scrieți o scrisoare administratorului site-ului, în care să puneți o legătură exterioară inofensivă.
Asta a fost imposibil să faci o astfel de viclenie, există "numere unice" (protecție nonce).
Nonce Funcții
Există cinci funcții pentru gestionarea numerelor unice în WordPress:
- wp_nonce_field ($ action, $ name) - creează un câmp de introducere cu un număr unic pentru formular.
- wp_create_nonce ($ action) - creează doar un număr unic ca șir.
- wp_nonce_url ($ url, $ action) - adaugă nonce URL-ului parcurg ca parametru de interogare? _wpnonce = 9d6bd884a1
- wp_verify_nonce ($ nonce, $ action) - verifică numărul unic.
- check_ajax_referer () - verifică cererea Ajax pentru respectarea codului nonce. Termina scenariul prin moarte, dacă testul nu reușește.
Exemplu de utilizare a protecției Nonce
Acesta este un exemplu din secțiunea "Utilizarea drepturilor utilizatorilor". se adaugă numai nonce.
Când creați o legătură, utilizați wp_create_nonce (). Pentru a adăuga un număr unic la link:
Argumentul transmis funcției asigură faptul că numărul unic este unic pentru această acțiune specifică.
Apoi, când procesăm cererea, verificăm numărul unic:
Verifică referer
În plus față de Nonce, există încă un control referitor la referer. Aceasta completează protecția nonce. Aceasta este o verificare independentă și funcționează astfel: un parametru este trecut din formularul în care este specificat HTTP_REFERER. Când se procesează un formular, acest parametru este bifat și, dacă cererea nu vine din pagina așteptată, verificarea eșuează.
Pentru controalele referer în WordPress există 3 funcții:
concluzie
Atunci când efectuați orice operațiune de conversie a datelor, de exemplu, salvând setările pluginului sau ștergând datele pluginului, trebuie să vă asigurați întotdeauna că utilizatorul are dreptul de a efectua operația (verificarea drepturilor) și că interogarea executată nu este depășită (check nonce).
Situri creative pentru oameni creativi