Ghid pentru nonces în WordPress
Publicat: 2023-02-12Securitatea este un subiect vital pentru toți proprietarii de site-uri web. Deși există multe strategii pentru a vă menține site-ul în siguranță, utilizarea nonces-urilor în WordPress nu trebuie trecută cu vederea. Aceasta este una dintre caracteristicile de securitate cele mai utilizate pe scară largă și previne o serie de probleme potențiale.
Un nonce este un „număr folosit o dată” și protejează formularele și adresele URL de persoane rău intenționate și alte utilizări greșite. Aceste numere funcționează ca valori de identificare pe care browserele utilizatorilor vor trebui să le arate, pentru a obține permisiunea de a efectua acțiuni sensibile.
În acest articol, ne vom uita la modul în care funcționează nonce-urile în WordPress și cum să le creăm. Vom discuta apoi cum să verificăm un nonce. Să începem!
Cum funcționează Nonce-urile în WordPress?
Scopul principal al unui nonce este de a vă proteja site-ul WordPress de atacuri rău intenționate, cum ar fi falsificarea cererilor între site-uri (CSRF). Acest tip de atac păcălește utilizatorii să trimită un formular sau să facă clic pe un link care este dăunător site-ului dvs. Pentru a vă proteja site-ul, WordPress verifică valoarea nonce și permite finalizarea acțiunii numai dacă acea valoare este corectă.
Noncele fac deja parte din funcționalitatea WordPress și nu trebuie să le adăugați la elementele generate de WordPress. Aceasta înseamnă că acțiunile cheie, cum ar fi adăugarea și editarea postărilor, sunt protejate automat.
Când este utilizat un nonce, acesta are o durată de viață implicită de 24 de ore. După acest timp, nonce nu mai poate fi folosit pentru a verifica acțiunea pentru care a fost definit. Cu toate acestea, această durată de viață poate fi ajustată de administratorii site-ului web.
Unul dintre cele mai comune atacuri CSRF împotriva cărora nonces protejează este ștergerea rău intenționată a conturilor de utilizator. După implementarea unui nonce, ecranul de administrator va genera o adresă URL pentru ștergerea contului. WordPress va adăuga un nonce la sfârșitul acelei adrese URL, care va arăta cam așa:
http://yourdomain.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315
Dacă un atacator încearcă să înlocuiască ID-ul utilizatorului cu o altă valoare, cum ar fi „user=8”, nonce va fi invalid. Ștergerea contului va eșua și se va afișa o pagină de eroare 403 Forbidden. Acest lucru face mult mai greu pentru persoanele rău intenționate să atace conținutul site-ului dvs.
Este important să știi că non-urile vă pot proteja site-ul web, dar trebuie să înțelegeți și cum să le implementați. Deși sunt deja active pentru funcțiile WordPress implicite, poate fi necesar să le implementați manual pentru temele și pluginurile dvs.
Crearea unui Nonce
Pentru a crea un nonce, va trebui să adăugați o funcție la codul site-ului dvs. Toate codurile de creare nonce sunt plasate în fișierul functions.php . Pentru a deschide acest fișier, navigați la Aspect > Editor de teme în tabloul de bord WordPress. În dreapta, faceți clic pe functions.php pentru a deschide editorul de fișiere.
Nonce-urile sunt implementate separat pentru adrese URL, formulare și acțiuni. Pentru a crea o acțiune nonce, adăugați următorul cod la acest fișier:

$nonce= wp_create_nonce('$action');
Secțiunea „$action” a codului ar trebui să fie ajustată pentru a reflecta acțiunea pe care doriți să o verifice nonce. Un exemplu ar fi utilizarea acțiunii „șterge-post”, care setează nonce pentru a verifica utilizatorii care încearcă să ștergă postările.
Pentru a crea un nonce pentru o adresă URL, puteți utiliza următorul cod:
$nonce= wp_nonce_url();
Între paranteze, va trebui să precizați argumentele funcției. Acesta este URL-ul complet și șirul pentru acțiunile utilizatorului. Șirul ar trebui să fie specific unui singur utilizator, pentru a îmbunătăți securitatea nonce-ului.
Dacă doriți să creați un nonce pentru ștergerea unui cont de utilizator, puteți utiliza acest fragment:
$nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);
WordPress va implicit numele nonce la „_wpnonce”, dar îl puteți actualiza adăugând numele ales la sfârșitul șirului de mai sus.
Pentru a crea un nonce pentru un formular, includeți acest cod:
$nonce= wp_nonce_field();
În paranteze, va trebui să adăugați un șir pentru acțiunile utilizatorului. Odată terminat, funcția creează două câmpuri ascunse în formular, primul având valoarea hash nonce. Al doilea câmp este adresa URL curentă. Funcția finală ar trebui să arate cam așa:
$nonce= wp_nonce_field('remove-comment_'.$comment_id);
Această funcție nonce va avea și numele implicit WordPress nonce. Cu toate acestea, acesta este și ceva pe care îl puteți modifica dacă preferați.
Verificarea unui Nonce
După ce ați adăugat un nonce pe site-ul dvs. WordPress, este important să îl verificați. Acest lucru asigură că nonce funcționează corect și vă păstrează site-ul în siguranță.
Sunt utilizate diferite metode pentru a verifica nonce pentru adrese URL și formulare. Pentru a verifica o adresă URL nonce, adăugați următorul cod în fișierul functions.php :
wp_verify_nonce($nonce, $action);
În această funcție, ajustați „$nonce” la numele nonce-ului pe care doriți să îl verificați, cum ar fi „delete-user”. Apoi, schimbați șirul „$acțiune” la momentul specific în care este creat nonce. Când funcția rulează, va returna „false” dacă nonce este invalid.
Dacă nonce este valid, pe de altă parte, funcția va returna fie 1, fie 2. Aceasta vă spune vârsta nonce-ului. O valoare egală cu 1 înseamnă că nonce a fost creat în ultimele 12 ore. O valoare egală cu 2 înseamnă că nonce a fost creat cu peste 12 ore, dar cu mai puțin de 24 de ore în urmă.
Dacă ați adăugat un nonce la un formular, este necesar următorul cod pentru a-l verifica:
check_admin_referer($action, $nonce);
Dacă valoarea nonce este validă, formularul va funcționa așa cum este prevăzut. Cu toate acestea, dacă nonce este invalid, browserul utilizatorului îl va redirecționa către o pagină de eroare 403 Forbidden.
Creați experiențe digitale sigure pe WP Engine
Securitatea este vitală pentru un site web stabil, iar non-urile adaugă un strat suplimentar de protecție. Pentru a le implementa, tot ce trebuie să faceți este să adăugați un cod în fișierul functions.php . Codul folosit variază în funcție de tipul de nonce pe care doriți să îl creați și de acțiunea pe care doriți să o protejați.
În timp ce crearea și implementarea noncesului îmbunătățește securitatea site-ului, există și alte protocoale de securitate de luat în considerare. Din fericire, platforma de găzduire WordPress sigură a WP Engine oferă unele dintre cele mai bune resurse de securitate pentru utilizatori și dezvoltatori. Acest lucru vă lasă mai mult timp să vă concentrați pe perfecționarea site-ului dvs. WordPress!