Arhive categorie: Programare Web

9 programe pentru web development

Pentru web development in principiu este nevoie de browser si editor text. Am pregatit o lista programe pe care le folosesc si iti recomand sa le instalezi si tu pe laptopul / PC-ul tau. Majoritatea softurilor sunt gratuite. 

  1. Browser – Gratuit
    Iti recomand Chrome / Firefox, totusi un web developer ar trebui sa aiba acces la toate tipurile de browsere.

  2. Terminal – Gratuit
    Pentru windows iti recomand Git bash
    Pe linux / macos ai acces la un terminal puternic

  3. Editor text – Gratuit
    Netbeans este ideal pentru PHP development
    Visual Studio Code este foarte bun pentru JS development
    Sublime Text* este ok atat pentru PHP cat si pentru JS. Este un editor care consuma foarte putine resurse.

    Sublime Text necesita licenta comerciala, in acest moment costa 80$ USD.

  4. XAMP / MAMP / LAMP  – Gratuit
    Apache – Web server
    MySQL – Baza de date relationala
    PHP* – Limbaj de programare / scripting.

    *Pentru development este de ajuns serverul de web din PHP.

  5. Postman – Gratuit
    Postman este un client API, se foloseste pentru testare API-uri.

    Exista si o varianta comerciala, dar nu este necesara pentru inceput.

  6. MySQL Workbench – Gratuit
    Este cel mai puternic client MySQL.
    Alternative: PhpMyAdmin sau Adminer

  7. Comunicare – Gratuit
    Skype / Gmail

  8. GIT – Gratuit
    Este folosit pentru versionarea proiectelor.
  9. Synergy – 19$ USD
    Este un software pentru a share-ui o singura tastatura / mouse pe mai multe laptopuri / PC-uri.

Daca iti doresti sa inveti programare web de la zero, si nu numai, alaturat gasesti datele mele de contact!

Anunțuri

Cum sa imbunatatesti experienta ca si programator web?

Te intereseaza modalitatile prin care ti-ai putea imbunatati experienta ca si programator web?

In orice domeniu, dar si in viata de zi cu zi, mai importanta decat cantitatea va fi mereu calitatea. Iar acest lucru este valabil si in cazul programatorilor web. Deoarece pe langa experienta pe care o acumulezi, e foarte important sa iti desfasori munca intr-un mod cat mai eficient.

Motiv pentru care e important ca mereu sa incerci sa iti dezvolti cunostintele si metodele de lucru, un exemplu bun in acest sens pot fi colegii de breasla. Se stie despre programatorii web, ca fiecare dintre ei au un stil propriu de a realiza sarcinile.

Poti vorbi cu mai multi colegi sa vezi motivul pentru care aleg aceea modalitate, iar apoi toate sa iti foloseasca ca surse de insipiratie pentru a-ti imbunatati experienta si propriul stil de lucru.

Good to know! E recomandat sa iti aloci o ora/doua in fiecare zi pentru a-ti imbunatati experienta si stilul de lucru ca si programator web, din care sa iti faci un obicei; si nu doar ceva care sa fie temporar.

Productivitatea in munca este o investitie, in care poate nu vezi de la inceput rezultate, ba chiar dimpotriva, in schimb pe termen lung rezultatele vor aparea cu siguranta.

Citeste orice material educational tehnic disponibil in compania ta

Majoritatea companiilor, indiferent de dimensiunea acestora, au anumite materiale sau laboratoare speciale pentru ca fiecare programator web si nu numai, sa isi poata dezvolta cunostintele. Tot ce e recomandat sa faci, este doar sa profiti de aceste oportunitati!

De exemplu, Google are o varietate mare in ceea ce privesc laboratoarele de codare. In aceste laboratoare, se invata cele mai bune practici luate de la ingineri veterani bazate pe zeci de ani de experienta. Au si un plus, sunt disponibile in mai multe limbi, pentru a putea fi accesate de o comunitate cat mai mare de oameni tehnici.

Studiaza codul scris de cei mai buni ingineri din companie si incearca sa intelegi alegerile facute si modul de implementare

Cele mai bune exemple pentru a vedea cum sa iti imbunatatesti experienta ca si programator web si cum sa scrii cel mai bine cod sunt inginerii veterani din compania in care lucrezi.

Chiar daca lucrurile in IT evolueaza mereu, acestia, avand o experienta de zeci de ani, au intalnit o varietate mare de cazuri si nevoi ale clientilor. Mai mult, la randul lor, au trecut prin perioada in care incercau sa isi seama cum anume isi pot imbunatati cunostintele si productivitatea.

Incepe prin a studia cod pe care l-ai mai scris, sau care iti este mai familiar si intreaba-te cum ai fi scris tu codul pentru anumite parti. Astfel, aceasta experienta te poate ajuta sa inveti din exemplele lor.

Fii stapan pe limbajele de programare pe care le folosesti

Una dintre cele mai bune modalitati pentru a-ti imbunatati cunostintele si in cele din urma pentru a fi cat mai productiv/a este sa stapanesti limbajele de programare pe care le folosesti.

Citeste o carte sau doua despre limbajele de programare pentru a-ti dezvolta o mai buna intelegere a acestora si concentreaza-te. Nu e necesar sa fii full stack developer, insa informatiile pe care le cunosti, sa le dezvolti pana la un nivel de master.

Good to know! Imbunatatirea cunostintelor ca si programator web este un proces continuu, motiv pentru care e recomandat sa iti construiesti o lista cu cartile tehnice pe care sa le citesti.

Trimite codul tau la analiza celor mai critici programatori web

Toti avem o oarecare reticenta atunci cand vine vorba de critica asupra muncii noastre, insa este o modalitate foarte buna pentru a-ti imbunatati cunostintele si pentru a lucra mai eficient.

Critica nu trebuie primita si nici oferita ca o cearta, ci ca un aspect constructiv. Poti sa ceri mai multe detalii asupra analizelor pe care le primesti, pentru a te asigura ca intelegi exact ce trebuie si ce nu trebuie facut.

Daca iti doresti sa inveti programare web de la zero, si nu numai, alaturat gasesti datele mele de contact!

Introducere format JSON

Cunosti formatul JSON? Te intereseaza mai multe informatii despre acesta?

IT-ul este un domeniu care a inceput sa se dezvolte pentru a usura viata oamenilor. Din acest motiv, IT-ul va fi mereu intr-o continua cautare pentru a gasi cele mai bune solutii spre satisfacerea clientilor.

Numele JSON este un acronim pentru JavaScript Object Notation. Acesta un format text pentru date care a fost conceput pentru a putea fi human-readable si usor de transmis intre un server si un client web. Sintaxa acestuia provine din JavaScript, dar chiar si asa poate fi folosit in majoritatea limbajelor de programare, incluzand C# si AS3.

Arrays

Ca si programator web cu experienta, cu siguranta intelegi ce inseamna aranjarea in formatul JSON, dar ca si programator web incepator notiunea s-ar putea sa nu iti fie atat de clara.

Good to know! Aranjarea se refera la o colectie de itemi, fiecare dintre acestia fiind atribuiti unui specific intreg.

De exemplu, in JSON, o etalare a primelor sase litere din alfabet ar putea fi reprezentate in acest fel:

["a", "b", "c", "d", "e", "f"]

Cu siguranta, programatorii web care au mai lucrat in JavaScript si AS3 vor gasi asezarea de mai sus familiara. De asemenea, si in cazul limbjaului de programare C# pentru definirea unui etalon, insiruirea se face in acelasi mod.

Remember! Parantezele drepte se folosesc pentru a descrie etalarea, iar virgulele sunt folosite pentru a separa elementele diferite.

Exista si o modalitate mai usoara pentru ca aceasta aranjare sa fie citita mai usor, si anume:

[
  "a", 
  "b", 
  "c", 
  "d", 
  "e", 
  "f"
]

PS: Se poate observa ca dupa ultimul element nu mai exista nicio virgula.
Etalarea JSON functioneaza si sub forma altor elemente precum false, true sau null, sau chiar numere. Nu exista o scriere tipica, ceea ce ofera libertate pentru a combina tipurile de valori de care ai nevoie. De exemplu:

[
 "apple",
 3,
 912,
 null,
 -7.2222202,
 "#",
 true,
 false
]

Good to know! Pentru a incadra fiecare insiruire ai nevoie de ghilimele duble (“), intrucat cele single (‘) nu sunt permise.

Objects

Un array reprezinta o colectie de elemente in care fiecare element este distribuit intr-o anumita unitate. Un obiect (object) este o colectie de elemente in care fiecare element este distribuit unui sir specific.

Elementele sunt numite valori, iar sirurile folosite pentru a le identifica sunt numite chei (keys). In anumite limbaje de programare aceasta structura de date poate fi gasita sub numele de hash map sau hash table.

Poti folosi objects pentru a utiliza sirurile ca si valori si nu doar keys. De exemplu:

{
 "PHP": 10,
 "CSS": 8,
 "HTML": 10,
 "JavaScript": 9
}

Folosirea JSON cu alte platforme

JSON este un format popular, motiv pentru care acesta functioneaza si cu platforme diferite. Acest mod de functionare este posibil datorita generators si parsers. Acestea sunt unelte si librarii (tool-uri si libraries) care ajuta colaborarea dintre JSON si alte platforme sa functioneze.

Mai exact, generatorii ajuta cu encodarea unui limbaj de programare intr-un altul, iar parsers decodeaza un limbaj de programare pentru a putea fi inteles de un alt limbaj de programare. Ambele optiuni sunt disponibile pentru aproape toate limbajele de programare.

Daca iti doresti sa inveti mai multe despre formatul JSON, sa inveti programare web de la zero, si nu numai, ma poti contacta aici!

 

Noul WooCommerce REST API se bazeaza pe WP REST API

Cauti mai multe informatii despre noul WooCommerce REST API?

In 2014, pe cand WooCommerce versiunea 2.1 se dezvolta, se vorbea despre WordPress care sa aibe propriul REST API. Insa, cererea a fost atat de mare pentru un REST API in WooCommerce incat a trebuit sa fie facut.

Dar, avand in vedere ca acum este face parte din nucleul WordPress-ului si tehnologia evolueaza pe zi ce trece, s-a inceput sa se lucreze la inlocuirea procesului API, cu ceea ce ofera WordPress.

Ce schimbari API vor aparea?

Una dintre primele schimbari ce vor aparea cu API sunt endpoints-urile, unde pentru a-ti aduce comenzile procesul va fi putin diferit.

A fost necesar sa se faca modificari in ceea ce privesc datele care sunt oferite prin API; date care reflecta schimbarile si progresul din nucleul WooCommerce-ului, dar totusi datele sa fie constante.

WP REST API foloseste documente pentru endpoints si scheme pentru a descrie. In acest fel, e mai usor procesul de crearea a obiectivelor, deoarece stii ce ai nevoie.

Ce fel de API ar trebui sa folosesc pentru aplicatii?

De indata ce este lansat, este recomandat sa folosesti noul WP API, intrucat este mult mai usor de folosit, este simplu si foloseste nucleul WordPress-ului pe cat de mult posibil.

Pentru ca toti utilizatorii WordPress sa aibe timp de a migra de la versiunea curenta de REST API la cea noua, inca se aproba utilizarea versiunii curente.

Ce ramane la fel?

Exista anumite puncte care raman la fel, cum ar fi:

  • Webhooks vor functiona in continuare;
  • Toate cheile WC REST API vor putea fi folositi in WP REST API;
  • Toata partea curenta de REST API va fi in continuare disponibila;
  • Autentificarea endpoint va functiona ca si pana acum.

In ceea ce priveste autentificarea este posibil sa se foloseasca oAuth1.0a si Basic Auth folosind cheile WC API. Nu sunt planuri pentru a elimina sistemul de chei API, tocmai pentru a facilita migrarea aplicatiilor folosind APIs.

Daca iti doresti sa inveti mai multe despre REST API, ce inseamna programarea in WordPress, si nu numai, ma poti contacta aici!

Introducere in WordPress REST API

WordPress a avut o crestere mare in ultimii ani, de la aparitia sa in 2003 cand era doar o platforma de blogging la una dintre cele mai populare sisteme de management al continutului. S-a maturizat destul pentru a sustine majoritatea audientei online.

Cand vine vorba despre dezvoltarea unui CMS, o parte importanta sta in functionalitatile pe care le prezinta si pe care le imbunatateste odata cu trecerea timpului. Una dintre cele mai noi functionalitati, este REST API care permite altor platforme sa interactioneze cu WordPress.

Aceasta functionalitate va fi de mare ajutor programatorilor web care dezvolta aplicatii personalitate si sisteme integrate cu WordPress. Mecanismul e posibil deoarece, WordPress ofera capacitatea de a adauga si a sterge continut de pe orice site web sau client, fara a fi necesar sa instalezi WordPress in acel site web.

Pentru a avea o imagine de ansamblu a ceea ce presupune REST API, iti voi prezenta conceptele de baza REST si JSON.

Inceputurile REST

In primul rand, REST este o abreviere pentru Representational State Transfer. REST este o tip de arhitectura. E necesar sa ii intelegi structura si conceptele, deoarece sunt esentiale in dezvoltarea unor aplicatii care folosesc tipul acesta de arhitectura.

Acest model de arhitectura ajuta la crearea si organizarea unui sistem distribuit. Vede web-ul ca o aplicatie hypermedia distribuita a carei link-uri surse sunt transmite prin schimbul de reprezentatii de stare de resurse.

Fundatia pe care se cladeste arhitectura REST sunt resursele, acestea fiind esentiale pentru web; web-ul fiind numit si un resource-oriented.

In ceea ce priveste WordPress, aceste resurse sunt entitati discrete la fel ca paginile, utilizatorii, postarile, postarile personalizate, comentariile, etc. Pentru a interactiona cu resursele, sunt folosite URI-le (Uniform Resource Identifier) care sunt identificatoare pentru resurse.

WP REST API suporta mai multe tipuri de resurse, precum: pagini, comentarii, utilizatori, postari, tipuri de postari personalizate, media, conditii, postari meta si revizii.

Codurile de raspuns HTTP

Raspunsul unui server in urma unei cereri se face prin reintoarcerea unui raspuns care contine un cod de raspuns HTTP. Aceste coduri sunt numere cu semnificatii predefinite. De exemplu, aproape orice persoana care are acces la internet cunoaste codul status 404, care inseamna ca ceea ce utilizatorul cauta nu poate fi gasit.

Good to know! Raspunsul server-ului este dependent de metoda folosita in solicitare sau de felul verbului HTTP.

Printre cele mai utilizate coduri de raspuns HTTP si care se gasesc atunci cand lucrezi cu WP REST API sunt:

  • 200 – OK: Acest cod arata ca solicitarea a fost completata cu succes si ca serverul a oferit un raspuns; de obicei apare dupa o solicitare de tipul GET care a fost realizata cu succes;
  • 201 – Created: Deobicei apare dupa o solicitare de tip POST care a fost finalizata cu succes;
  • 400 – Bad Request: Apare atunci o solicitare a fost trimisa cu parametrii invalizi sau cu ceva lipsa. Se regaseste deobicei in solicitarile de tip PUT si POST;
  • 405 – Method not Allowed: Se regaseste cand un verb HTTP a fost incarcat in solicitare si nu a fost suportat de catre resursa. Un exemplu in acest sens, sunt situatiile in care un utilizator incearca sa actualizeze o resursa read-only;
  • 410 Gone: O resursa a fost mutata intr-o alta locatie; in situatiile in care se incearca stergerea unei surse care e deja stearsa sau care a fost mutata in cosul de gunoi;
  • 500 – Internal Server Error: Solicitarea nu poate fi completa datorita unei situatii neasteptate;
  • 501 – Not Implemented: Serverul nu suporta functionalitatea pentru a putea termina solicitarea, fiind des intalnita in situatiile in care serverul primeste o metoda de solicitare pe care nu o recunoaste.

Verificarea acestor coduri de raspuns si verbe HTTP se fac mai amanuntit in momentul in care se incepe proiectul cu API.

Verbele HTTP

Cu ajutorul REST API poti efectua operatii de tip CRUD. CRUD este o abreviere pentru Create Read Update Delete. Aceste operatii se fac pe surse folosind HTTP si tocmai din aceasta cauza REST foloseste solicitari limitate de HTTP:

  • PUT – Folosit pentru actualizarea unei surse;
  • GET – Pentru a citi sau a recupera o resursa;
  • HEAD – Pentru a verifica existenta unei surse;
  • POST: Folosit pentru a crea o noua resursa;
  • DELETE: Pentru a sterge o resursa;
  • OPTIONS: Folosit pentru a recupera toate verbele suportate de catre o resursa.

Intr-un service RESTful, fiecare dintre aceste verbe are un sens bine definit. GET, POST, PUT si DELETE fac parte din actiunile CRUD; in sensul in care acestea recupereaza, actualizeaza, creeaza si sterg entitati.

Verbele OPTIONS si HEAD ajuta un client pentru a determina existenta unei surse si ce verbe HTTP sunt disponibile pentru a efectua operatii ulterioare.

Pentru a efectua cu succes aceste postari folosind WP REST API se folosesc urmatoarele endpoint-uri:

GET wp/v2/posts – Acesta va returna o colectie a tuturor postarilor; iar cand urmatorul endpoint este declansat se reintoarce la o anumita entitate. De exemplu, o postare care are un id de 100:

GET wp/v2/posts/100 – O solicitare de tip POST creeaza o noua entitate, in timp ce solicitarea PUT inlocuiesti acea entitate cu o noua versiune.

PUT wp/v2/posts/100 – O astfel de solicitare va actualiza o postare care are un id 100.

POST wp/v2/posts – Se foloseste pentru a crea o noua postare.

O solicitare de tip DELETE sterge o resursa din sistem. Aceasta, la fel ca si tipul de solicitare PUT sunt repetabile, in sensul in care au acelasi efect asupra sistemului.

Serviciul de RESTful mai ofera doua verbe HEAD si OPTIONS; care sunt de mare ajutor in situatiile in care un clien doreste sa verifice ce resurse sunt disponibile in sistem si ce actiuni sunt suportate; avand o imagine de ansamblu a actiunilor ce urmeaza a fi desfasurate.

Motive pentru care sa folosesti JSON REST API pentru WordPress

Combinatia dintre JSON si REST ofera un mecanism, care foloseste back-end-ul de la WordPress, pentru a crea aplicatii solide. Cele mai bune exemple in acest sens, sunt aplicatiile mobile care necesita un schimb de date intre dispozitiv/ client si server.

Astfel, JSON ofera o alternativa usoara pentru solutiile bazate pe  XML, care iau in vedere limitatiile pe care latimea de banda le are in momentul folosirii datelor mobile.

Cand vine vorba despre schimbul de date pe diferite platforme, care pot fi citite atat de oameni cat si de masinarii, JSON poate fi considerat un conector global. Acesta poate fi folosit fara nicio problema cu majoritatea limbajelor de programare, deoarece JSON este un format bazat pe text pentru stocarea datelor.

Iar cu ajutorul lui API, continutul site-ului tau WordPress nu este limitat, putand fi accesat atat de clienti cat si de alte site-uri. Motivul este pentru ca API expune anumite parti care apartin functionalitatilor interne, iar clientii pot interactiona cu site-ul tau de la distanta, fie pentru a crea continut nou, fie pentru actualizarea unor informatii. De asemenea, ai posibilitatea de a recupera continut de pe un site WordPress si de a-l publica pe un alt site.

WP REST API poate fi folosit pentru:

  • Aplicatiile Single Page (SPAs);
  • Aplicatii mobile;
  • Integrarea cu alte platforme server-side, ca de exemplu: Django, Ruby, .NET, etc;
  • Panouri de administrare personalizate pentru WordPress.

Avand in vedere ca framework-urile JavaScript, de tipul Backbone, Angular sau Ember, se dezvolta tot mai mult, fapt ce face posibila folosinta unuia dintre framework-uri de a crea cat mai bune experiente pentru utilizatori, in timp ce folosesti partea de back-end pentru WordPress.

Daca iti doresti sa inveti mai multe despre WP REST API, despre programarea web si programarea in WordPress, gasesti aici datele mele de contact!

SQL Injection – Cel mai folosit tip de atac

Te intereseaza mai multe informatii despre atacurile cibernetice? Cunosti tipul de atac SQL Injection?

Atacurile cibernetice sunt tot mai des intalnite si sub tot mai multe forme. Acestea sunt lansate din diverse motive, cum ar fi accesarea unor informatii secrete sau pentru a sabota anumite echipamente.

Indiferent de motiv si modalitatea de actiune, atacurile cibernetice sunt la fel de neplacute si pot ajunge chiar un obstacol in castigarea unor clienti si vizitatori noi sau in mentinerea celor existenti.

Asadar, pentru a putea preveni intr-o masura cat mai mare aceste atacuri, e recomandat sa afli cat mai multe informatii despre cum iti poti avea o securizare mai puternica, dar si despre tipurile de atacuri si modul lor de functionare.

Cat de raspandit e acest tip de atac?

SQL Injection este o vulnerabilitate foarte intalnita, motiv pentru care este considerata cea mai populara, de tipul sau, injectare.

Conform unui studiu, condus de Ponemon, 65% dintre organizatiile participante au experimentat un atac SQL Injection in ultimul an. Aceasta cercetare a fost publicata cu doi ani in urma, dar chiar si asa, se poate folosi ca o estimare.

SQL Injection este raspandita in special, in codul mostenire. Acum cativa ani, publicul online era mai putin constient de pericolul acestui tip de atac, motiv pentru care era mult mai intalnita.

Influenta atacului SQL Injection

La fel ca orice atac, influenta pe care acesta o poate avea difera de la un caz la altul. In majoritatea cazurilor, influenta pe care atacul o aduce sunt informatiile furate dintr-o baza de date. In aceasta categorie intra informatii confidentiale de mai multe tipuri, precum parole, nume de utilizatori si altele.

Intr-o situatie extrema, dar posibila, cel mai rau scenariou posibil ar include o preluare totala a intregului sistem; dar aceasta depinde si de mediul in care este si tipul de injectie.

SQL Injection care poate fi realizat atat manual, cat si automat; atacul automat punand aplicatia web in mai mare pericol. Deoarece, asa cum mentionam in articolele anterioare, atacatorul nu are neaparat motive personale pentru care iti ataca site-ul web.

In schimb, acestia scriu un cod care exploreaza mai multe site-uri, iar daca al tau e atacat inseamna ca exista o portita de intrare undeva.

Cum descoperi un astfel de atac

In functie de nivelul cunostintelor tale ca si programator web, poti alege mai multe modalitati pentru a putea descoperi daca site-ul web a fost atacat.

Pentru cei la inceput de drum, exista diferite companii care ofera astfel de servicii, aplicatii care scaneaza site-ul, sau poti alege un programator web cu experienta care sa efectueze aceasta parte.

In cazul in care ai mai multa experienta ca si programator web, poti cauta vulnerabilitatea printr-o analiza de cod, identificand tote queries in aplicatia web si urmarind cursul informatiilor. Sunt si cazuri in care nu se genereaza niciun feedback vizibil, poate sa fie dificila detectarea in timpul unui test de tipul blackbox.

Good to know! Intrucat majoritatea atacurilor cibernetice se fac in mod automat, acestea pot targeta orice tip de site web, indiferent de marimea acestuia. Chiar si site-urile web de dimensiuni mari si care sunt populare, precum Sony pot fi finta unui astfel de atac.

Exploatabilitate

Forma Injection de atac cibernetic, cuprinde o gama variata, care difera de la un caz la altul. Dar, in general, un atac SQL Injection clasic, este chiar usor de realizat, motiv pentru care aproape oricine il poate desfasura.

Acesta este si unul dintre motivele pentru care, SQL Injection, este unul dintre cele mai raspandite atacuri cibernetice. De asemenea, este si un motiv in plus, pentru care e necesar sa iti securizezi aplicatia web cat de puternic posibil si sa fii mereu la curent cu noile informatii care apar despre securizare.

Daca iti doresti sa inveti cum sa iti protejezi mai bine aplicatia web, sau cum sa descoperi daca un atac cibernetic incepe sa se desfasoare, gasesti datele mele de contact aici!

Ce este CSRF?

Cunosti termenul CSRF? Iti doresti sa afli mai multe informatii despre CSFR?

Atacurile cibernetice sunt tot mai des intalnite, motiv pentru care e important sa fii la curent cu toate informatiile relevante in acest sens. Deoarece, avand un site WordPress, fie personal sau business, ai increderea vizitatorilor, dar si a clientilor, si mai mult decat atat, site-ul tau cu siguranta contine si informatii relevante pentru care ai o responsabilitate.

Informatii si date care pot fi furate de catre hackeri, iar tu ca si proprietar de site WordPress ai responsabilitatea de a asigura siguranta pentru vizitatori si clienti, chiar si atunci cand tinta nu este site-ul tau.

Exista mai multe tipuri de atacuri cibernetice, in functie de ce anume se cauta. In cazurile in care, site-ul tau WordPress nu este tinta, fara o securizare solida, atacul poate fi asupra vizitatorilor si clientilor tai.

Ce este CSRF?

CSRF este un acronim pentru Cross-Site Request Forgery. Se refera la procesul prin care atacatorul are posibilitatea de a face solicitari in numele unui utilizator. Atacatorul, deobicei profita de avantajul faptului ca utilizatorul este deja autentificat, desi in majoritatea cazurilor, pentru acest tip de atac nici nu e nevoie de autentificare.

Focusul este pe trimiterea solicitarilor, iar atacatorul nu poate citi raspunsul astfel incat nu e de interes fortarea victimei de a-si recupera informatiile. Acest tip de atac se concentreaza pe solicitarile in stadiul de procesare.

Extindere CSRF

In 2010, CSRF s-a aflat pe locul 5 pe lista cu cele mai importante vulnerabilitati. In 2013, s-a refacut statistica, iar CSRF a cazut pe locul 8, in timp ce, ca si extindere a fost schimbat de la larg-raspandit la des intalnit.

Aceasta scadere se datoreaza faptului ca atat framework-urile cat si plugin-urile au fost realizate mai bine pentru o protejare cat mai solida impotriva acestor tipuri de atacuri, dar si oamenii au inceput sa fie mai constienti. Totusi, este o vulnerabilitate des intalnita, chiar si in cadrul companiilor mari.

Un nou loc in care CSRF a inceput sa apara, este in cadrul apelurilor API. Sunt tot mai populare situatiile in care solicitarile sunt facute prin API, in locul solicitarilor normale; motiv pentru care ca si programator web e important sa iti aduci aminte de necesitatea token-urilor.

Impact potential

Acest tip de atac se poate realiza atat asupra utilizatorilor, cat si asupra administratorilor site-urilor. In cazul in care tinta este utilizatorul, un atac realizat cu succes poate duce la mai multe tipuri de solicitari in stadiu de procesare, de la transferul unor fonduri pana la schimbarea informatiilor personale sau modificarea anumitor setari.

Toate acestea ar putea rezulta pe mai departe cu preluarea intregului sistem si site web.

Exploatabilitate

Utilizatorul ar trebui sa dea click pe un link sau sa viziteze o pagina cu link-ul incorporat, care ar putea putea sa fie o eticheta img.

Acest lucru se poate realiza prin atacul cibernetic a unui site pe care atacatorul stie ca utilizatorul il va vizita, dupa care va MITMing/ ataca utilizatorul si ii va trimite un email in care va incerca sa il insele pe utilizatorul sa dea click unui link.

Cum poti descoperi un CSRF

Uita-te dupa orice link, formular sau apel API caruia ii lipseste securizarea sau un token CSRF.

Avand in vedere, ca exista multe conceptii gresite in ceea ce priveste securizarea unui site web, in care chiar si programatorii web pot cada. De aceea e indicat sa verifici si sa te uiti in sectiunea de Remediation pentru exemple in care securizarea nu este completa.

Pentru a intelege mai bine, uite un exemplu de aplicatie vulnerabila. Sa presupunem ca este interfata unei banci si arata asa:

<form action=”send.php” method=”get”>
<input name=”amount” placeholder=”Amount”>
<input name=”account” placeholder=”Destination”>
<input type=”submit” value=”Transfer”>
</form>

O solicitare pentru a trimite o anumita suma intr-un anumit cont ar arata:

https://example.com/send.php?amount=10&account=1234

In care se poate observa ca nu exista niciun mecanism de securitate si niciun token. Iar in momentul in care utilizatorul ar apasa click pe link, suma trecuta (10) s-ar transfera imediat catre respectivul cont (1234).

Daca iti doresti sa inveti cum sa iti securizezi site-ul web, sa inveti programare web de la zero, si nu numai, alaturat gasesti datele mele de contact!