Șaisprezece sfaturi de securitate pentru dezvoltatorii de pluginuri și teme WordPress

Publicat: 2021-10-19

Niciodată nu se poate fi prea atent!

O mare parte din munca noastră ca dezvoltatori este să ne asigurăm că site-urile și pluginurile pe care le construim sunt sigure.

Companiile au nevoie de soluții mai rapide, cu funcționalități din ce în ce mai complexe. Deși acesta este un progres bun, construirea de proiecte complexe necesită și o configurare adecvată de securitate. Securitatea WordPress este unul dintre cele mai importante aspecte ale dezvoltării site-ului web.

Odată cu creșterea complexității caracteristicilor, mulți dezvoltatori ratează principiile de bază de securitate pentru dezvoltarea site-urilor web și a aplicațiilor web. Acest lucru are ca rezultat un site web defecte, care este deschis atacurilor cibernetice și altor riscuri.

Prin urmare, este esențial să implementați câteva protocoale de bază de securitate pentru dezvoltarea de site-uri web și aplicații web în timp ce vă construiți proiectul.
Mai jos sunt 16 sfaturi de securitate pentru dezvoltatorii web care vă vor ajuta să vă păstrați site-ul în siguranță.

1. Aflați ce date necesită protecție

Unul dintre cele mai importante principii de securitate pentru dezvoltarea site-ului web este că trebuie doar să stocați datele necesare.
Când dezvoltați un proiect, trebuie să puneți aceste trei întrebări:

  • Ce date trebuie să stocheze compania?
  • Ce date sensibile trebuie să cripteze compania?
  • Dacă, dintr-un motiv oarecare, datele sunt compromise, cât de mult ar putea dăuna companiei?

Cu cât stocați date mai sensibile, cu atât este mai mare riscul de expunere. Dacă trebuie să stocați datele sensibile, trebuie să le criptați, astfel încât să devină dificil de accesat.

2. Implementați managementul rolului și controlul accesului

Când proiectați un site web, un plugin sau o temă, este important să acordați utilizatorilor cele mai mici privilegii posibile.

Privilegiile ar trebui limitate, astfel încât utilizatorul să primească doar ceea ce are nevoie și să nu poată accesa alte zone.

De exemplu, colaboratorii ar trebui să aibă posibilitatea de a crea postări și pagini noi, dar să nu le publice. Editorii ar trebui să poată crea postări noi și să le publice, dar să nu poată schimba designul sau pluginurile.

În mod similar, în timp ce dezvoltați o funcționalitate specifică în pluginul sau tema pe care doriți să o restricționați, asigurați-vă că creați noi roluri de utilizator WordPress în timpul instalării. Informați-i pe administratori, astfel încât rolurile potrivite să fie atribuite utilizatorilor respectivi care vor folosi pluginul sau tema pe care o dezvoltați.

Iată o reprezentare picturală rapidă a modului în care arată structura.

Managementul rolurilor și structura controlului accesului

Această abordare minimizează problemele, deoarece putem limita cât de multe daune poate face un intrus. De asemenea, puteți limita daunele cauzate de erori sau greșeli de către un utilizator curios care se încurcă în zonele unui site web în care chiar nu ar trebui să fie.

De asemenea, trebuie să restricționați accesul în cadrul echipei de dezvoltare, în funcție de rolul acestora.

3. Aplicați autentificarea

Autentificarea site-ului web este procesul de securitate care permite utilizatorilor să-și verifice identitățile pentru a obține acces la zonele restricționate ale unui site web.

În timp ce dezvoltați o temă sau un plugin, veți avea anumite date care trebuie restricționate în timp ce unele date sunt vizibile pentru utilizatori. Prin urmare, este important să adăugați verificări în cod pentru a verifica dacă utilizatorul care accesează date restricționate este autentificat și are rolul de utilizator corect.

În mod similar, atunci când construiți un site web, puteți implementa practici eficiente de gestionare a contului, cum ar fi aplicarea puternică a parolelor și autentificarea multifactorială pentru a proteja datele utilizatorilor.

Autentificarea cu doi factori este una dintre cele mai populare moduri de implementare a autentificării.

Autentificarea în doi factori (2FA) este un proces în doi pași în care aveți nevoie de un cod suplimentar sau de o parolă unică (OTP) pentru a vă conecta la site-ul dvs., în afară de parola site-ului. Acest OTP este de obicei trimis către un alt dispozitiv prin mesaj text, apel telefonic sau o aplicație 2FA recunoscută, cum ar fi Google Authenticator, Authy, Duo Security și multe altele. Implementarea 2FA vă protejează de atacurile cu forță brută.

Dacă vă construiți site-ul web în WordPress, consultați aceste instrumente incredibile care vă permit să vă securizați site-ul.

  • Limitați încercările de conectare: acest instrument vă protejează de atacurile cu forță brută prin limitarea numărului de încercări de conectare. De asemenea, include anti-spam și deconectare automată a utilizatorului inactiv.
  • WP2 FA: Pluginul WP2FA vă permite să adăugați o autentificare cu doi factori site-ului dvs. într-o clipă. De asemenea, acceptă mai multe aplicații 2FA, cum ar fi Google Authenticator, Authy, FreeOTP, Duo Security și multe altele.
  • Shield Security: Acest plugin nu acceptă aplicații 2FA, cum ar fi Google Authenticator și SMS 2FA, totuși este util pentru cei care folosesc YubiKey.
  • WPassword: Acest plugin vă ajută să aplicați parole puternice pentru site-ul dvs. WordPress, să blocați utilizatorii cu prea multe încercări eșuate de autentificare și multe altele. Se integrează perfect cu WooCommerce și alte pluginuri terțe.

4. Verifică-ți tema sau pluginul înainte de a-l lansa

Înainte ca o temă sau un plugin să fie lansat, trebuie să vă asigurați că codul dvs. este cât se poate de lipsit de erori. Puteți utiliza anumite dependențe ale compozitorului pentru a detecta orice vulnerabilitate în codul dvs.

Unele dintre dependențele recomandate pentru site-urile WordPress sunt:

  • Wpthemereview
  • Standarde de codare Wp

Aceste standarde de codare au reguli stricte de codare, cum ar fi evadarea întotdeauna a datelor înainte de a le imprima, utilizarea nonce pentru toate solicitările, igienizarea datelor din solicitare înainte de a le utiliza, furnizarea de permisiuni adecvate de utilizator și multe altele pentru a vă asigura codul.

Aceste instrumente sunt grozave dacă vă dezvoltați propria temă sau plugin.

Ar trebui să verificați și WPScan Security Scanner. Este un scaner de securitate online grozav care verifică site-ul dvs. pentru eventuale vulnerabilități.

5. Evitați Anumite Funcții PHP

Anumite funcții PHP, cum ar fi eval() și unserialize(), pot expune datele de sistem și pot duce la expunerea datelor serverului, ceea ce poate cauza închiderea serverului sau accesarea tuturor informațiilor serverului de la hacker.

Iată câteva funcții PHP pe care ar trebui să le evitați acolo unde este posibil:

eval() : eval poate executa cod PHP arbitrar. Ar putea expune codurile dvs. la atacuri de injecție dacă nu sunt utilizate corespunzător.

serialize() sau unserialize(): nu utilizați serialize() sau unserialize() cu intrare furnizată de utilizator. Atacatorii pot exploata aceste funcții. Ei pot transmite un șir cu un obiect arbitrar serializat pentru a rula cod arbitrar.

md5() : Internetul este plin de recenzii despre punctele slabe criptografice md5() 1 și este considerat nesigur. Utilizați o funcție de hashing mai bună, cum ar fi SHA-2.

sha1() : sha1() este o altă funcție de hashing care nu ar trebui utilizată din cauza naturii rapide a algoritmilor de hashing. Se recomandă utilizarea algoritmului de hashing SHA-2 în locul md5() în orice cadru modern.

6. Folosiți linters pentru a găsi probleme în cod

Un instrument lint este un analizor de cod static de bază care verifică codul sursă pentru erori programatice și stilistice. Tonul vocii lui Linter ar trebui să fie prietenos pentru ca proiectul să continue.

Codurile Lint sunt o modalitate excelentă de a găsi potențiale vulnerabilități și de a reduce erorile în timpul dezvoltării unui site web sau a unei aplicații. Puteți utiliza anumite linter-uri de securitate pentru dezvoltarea PHP, JS și HTML.

Iată câteva instrumente notabile pentru analiza statică a codurilor dvs. PHP:

  • PHP-Parallel-Lint
  • SonarLint
  • Psalm
  • PHP Lint

Puteți utiliza SonarLint și pentru listing HTML și Javascript.

Alte linter-uri JS demne de remarcat sunt:

  • JS Lint
  • ES Lint

7. Eliminați codul și pluginurile neutilizate

Cu software-ul din ce în ce mai complex, potențialul de vulnerabilități în cod crește și el. Temele și pluginurile WordPress nu sunt diferite. Funcțiile din ce în ce mai mari ale codurilor precum HTML5, CSS și JavaScript le permit dezvoltatorilor să creeze aplicații web bogate.

Cu toate acestea, complexitatea tot mai mare a aplicațiilor este o sabie cu două tăișuri. În timp ce ajută la furnizarea caracteristicilor pe care utilizatorii le așteptă, ele extind și suprafața de atac a aplicației. O măsură pentru a face față unei astfel de vulnerabilități este eliminarea codului care nu este utilizat.

Este posibil ca utilizatorii diferiți să nu aibă nevoie de toate funcțiile de la un site web sau o aplicație web. Prin eliminarea funcțiilor inutile bazate pe cerințele utilizatorului în fiecare implementare, puteți reduce suprafețele de atac și riscul asociat.

Dacă vă place să dezvoltați site-uri web în WordPress, vă recomandăm să folosiți teme și pluginuri care vă îndeplinesc nevoile, în timp ce sunt ușoare în ceea ce privește codul lor. Acestea nu numai că vă mențin site-ul în siguranță, ci vă ajută și la optimizarea motoarelor de căutare. Iată câteva dintre cele mai bune și mai rapide teme WordPress disponibile.

8. Utilizați validarea pe partea de server și pe partea clientului

Dacă sunteți cineva căruia îi place să scrie coduri personalizate, este esențial să utilizați atât validarea pe partea client, cât și pe partea serverului. Validarea la nivelul clientului ajută la protejarea împotriva greșelilor comune ale utilizatorului, cum ar fi introducerea incorectă a datelor sau uitarea câmpurilor. O astfel de validare prinde date nevalide înainte de a ajunge pe server, economisind timp și bani.

Imaginați-vă, dacă validarea clientului are loc numai după ce o călătorie dus-întors la server eșuează, vă veți confrunta cu întârzieri în a spune utilizatorilor ce au greșit, fără a le permite să-și repare greșelile imediat.

Cu toate acestea, validarea la nivelul clientului nu este suficientă ca măsură de securitate. De asemenea, trebuie să utilizați validarea pe partea serverului. Validarea la nivelul serverului vă protejează de intrări rău intenționate și de alți vectori de atac.

9. Dezinfectați orice intrare de utilizator și solicitați date

User Input Sanitization este o măsură de securitate cibernetică de auditare, curățare și filtrare a datelor de la utilizatori și API-uri cu orice caracter și șiruri de caractere neautorizate sau nedorite pentru a preveni injectarea de cod dăunător în sistem.

Hackerii pot injecta comenzi specifice și pot executa acțiuni care pot compromite securitatea site-ului dvs. Sanitizarea intrărilor ajută la menținerea integrității datelor și îmbunătățește securitatea sistemului.

10. Aplicați remedieri permanente

În timp ce efectuați o verificare de securitate, este posibil să observați unele vulnerabilități care reapar din când în când. Trebuie să determinați cauza principală a noilor vulnerabilități, astfel încât să le puteți eradica definitiv în loc să adăugați un patch parțial.

De exemplu, foarte des s-ar putea să întâlniți probleme SQL / XSS în tema sau pluginul pe care îl dezvoltați. Într-un astfel de caz, în loc să construiți o verificare de dezinfectare pentru fiecare intrare, construiți o funcție/clasă și faceți o politică ca ori de câte ori există intrare de utilizator, toate datele să fie trecute prin această clasă/funcție.

11. Evitați configurațiile greșite de securitate și setările implicite

Configurațiile greșite de securitate apar atunci când setările de securitate nu sunt definite și implementate, iar valorile implicite sunt menținute. Eșecul implementării controalelor de securitate sau implementarea lor cu erori poate crește probabilitatea de a avea vulnerabilități în tema, pluginul sau site-ul web pe care îl construiți.

Configurarea greșită se întâmplă adesea deoarece un sistem, un administrator de baze de date sau un dezvoltator nu a configurat corect cadrul unei aplicații, ceea ce duce la căi deschise periculoase pentru hackeri.

Asigurați-vă că configurarea implicită este sigură și nu setați automat parole (dacă este necesar). De exemplu, dacă pluginul folosește un director în care utilizatorii pot încărca fișiere, cereți întotdeauna utilizatorilor să-și seteze parolele și calea directorului.

12. Fii informat și la curent

Securitatea cibernetică este un domeniu în continuă evoluție. Trebuie să fiți la curent cu cele mai recente actualizări de securitate și riscurile emergente, astfel încât să puteți ține pasul cu evoluțiile și să atenuați amenințările noi și emergente în codul dvs.

În calitate de dezvoltator, vă ajută să vă mențineți informat cu privire la știri și să scrieți cod mai sigur, care sunt cele mai bune practici pentru a securiza codarea, a dezinfecta mai bine codul și a gestiona mai bine introducerea utilizatorului.

Pentru a face acest lucru, urmăriți experții online și fiți la curent cu blogul dvs. preferat de dezvoltare web. Deja o citești pe aceasta. Deci ai un început bun.

Iată câteva dintre cele mai bune resurse despre WordPress Security.

  • Blogul WP White Security
  • Blogul WordFence
  • Sucuri blog

13. Mențineți codul

Codul pe care îl scrieți astăzi s-ar putea să nu fie sigur mâine. Noile variante de vulnerabilitate continuă să apară și are nevoie de actualizări constante și de la sfârșitul unui dezvoltator.

Pe măsură ce adăugați noi funcționalități la un plugin sau o temă, verificați dacă nu afectează securitatea altor module sau clase sau funcții din cod. În cazul în care o fac, trebuie să actualizați codul pentru a remedia problemele.

De asemenea, puteți utiliza instrumente precum GitHub pentru a menține codul temei sau al pluginului dvs. Vă va ajuta să urmăriți codul și să remediați problemele mai rapid. Securitatea evoluează mereu. Pentru a fi la curent cu cele mai recente tendințe, este esențial să vă reînnoiți în mod constant testele de securitate, astfel încât să puteți găsi vulnerabilități și să le îmbunătățiți.

14. Actualizați-vă pachetele software în mod regulat

Este o idee deloc.

Menținerea actualizate a pachetelor software precum PHP, Javascript, HTML și altele vă ajută să rezolvați noile probleme de securitate. Îmbunătățirea securității software-ului este întotdeauna o preocupare continuă și, în acest scop, suntem mereu la curent cu cea mai recentă versiune a unui astfel de software.

15. Colaborează cu echipa ta

Luați notă de biletele de securitate care sunt ridicate echipei dvs. de asistență. Dacă clienții dvs. raportează probleme de securitate, faceți o prioritate să le rezolvați. Utilizatorul tău final oferă cel mai bun feedback despre munca ta, așa că folosește-l bine!

Discutați problemele de securitate cu echipa de dezvoltare și asigurați-vă că orice patch pe care îl dezvoltați rezolvă problema de securitate și nu va sparge nimic înainte de a-l face public. Dacă aveți nevoie să colaborați des cu colegii de echipă sau să lucrați cu clienți mari care au departamente întregi implicate cu asistență, este o idee bună să utilizați software de webinar pentru a facilita procesul.

16. Pregătește-te pentru cel mai rău caz

Nu poți fi prea atent. Web-ul și orice este publicat pe web nu pot fi niciodată 100% sigure. Cu toate acestea, puteți lua măsuri care pot ajuta la atenuarea riscurilor.

Cheia este evaluarea potențialelor vulnerabilități și dezvoltarea unui răspuns adecvat la risc cu măsuri de securitate adecvate. Apar frecvent noi tehnici de atac, astfel încât cele mai bune practici trebuie să evolueze și ele ca parte a acestui proces.

De exemplu, dacă un site web WordPress este piratat, planul de urgență ar trebui să includă ce trebuie făcut în cazul unui hack. Ar trebui să conțină metode de backup, procesul de curățare și pașii necesari pentru a reconstrui site-ul web și a restabili serviciul.

Un astfel de plan va permite tuturor părților interesate să repare lucrurile rapid, fără a fi copleșiți de supraîncărcarea de informații sau de a reacționa excesiv cu acțiuni inutile.

Gânduri finale

Ce altceva puteți face pentru a îmbunătăți securitatea temei sau a pluginului dvs.? Ei bine, multe lucruri. Vedeți, scrierea codului securizat nu este un lucru unic. Tehnologiile evoluează și metodele de atac evoluează odată cu ea.

Realitatea este că nu puteți preveni toate atacurile cibernetice sau nu puteți atenua orice risc imaginabil. Scopul dvs. ar trebui să fie să faceți cât de mult puteți cu ceea ce aveți și să vă revizuiți constant codul pentru a-l îmbunătăți.

Construiește un plan de securitate bine definit pentru site-ul tău web și fii pregătit să înfrunți ce e mai rău. Asigurați-vă că luați biletele sau rapoartele legate de securitate drept cea mai mare prioritate.

Publicați o postare pe blog sau un anunț în cadrul comunității dvs. că ați lansat o remediere de securitate, astfel încât toți utilizatorii dvs. să poată actualiza și să evite compromiterea site-urilor lor web.

Securitatea cibernetică nu este foarte diferită de o strategie militară. Cheia este pregătirea! Sper că această postare te-a ajutat cu pregătirea ta. Spuneți-ne în comentarii ce măsuri luați pentru a îmbunătăți securitatea site-ului dvs.

Referințe utilizate în acest articol [ + ]

Referințe utilizate în acest articol
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C