Toate articolele de Sandor Kovacs

Web Developer. My daily menu: Breakfast - Wordpress | Lunch - Symfony + Drupal | Dinner: CodeIgniter

Cine poate sa invete programare web?

Te gandesti sa inveti programare web? Vrei sa afli intai daca e un domeniu pe care oricine ar putea sa il invete?

Pentru orice lucru nou care doresti sa il inveti, e nevoie de rabdare si multa munca. Programarea web si intreg domeniul IT sunt printre cele mai competitive domenii, intrucat aici lucrurile evolueaza de la o zi la alta; iar asta inseamna ca trebuie sa tii pasul.

Fiind un domeniu vast, volumul de informatie poate fi coplesitor, ceea ce te-ar putea determina sa renunti. Motiv pentru care e indicat sa te documentezi asupra a ceea ce inseamna sa fii programator web.

Teorie vs practica

In teorie, oricine ar putea sa invete programare web; insa pe langa dorinta, rabdare si munca, e necesar sa iti mentii angajamentul.

In practica totusi, descoperim ca media celor care trec cursurile de introducere in informatica e de maxim 70%, insemnand ca restul de 30% dintre studenti ori nu mai vin ori nu au luat nota de trecere.

Desigur, in cazul celor care nu trec examenele, exista sansa de a reda examenul pana il iau, si de aici crescand si rata. Insa chiar si asa, numarul studentilor care incep aceasta specializare si numarul celor care ajung sa si finalizeze este aproape redus la jumatate.

Ce ai nevoie pentru a invata programare web?

Pentru posturile din informatica, in general IQ persoanelor se situeaza intre 90 si 130, rezultand o medie mai mare decat a publicului general, care au 100.

Pe langa un IQ mediu, e nevoie de munca, ceea ce inseamna sa participi la cursuri si la exercitii practice pentru a invata cum sa scrii cod, pana reusesti.

Mai mult, daca ai putine cunostinte in informatica, iti va fi mult mai usor sa intelegi pasii pentru scrierea unui cod si in cele din urma sa il scrii.

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

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!

Securizeaza aplicatia web: Session fixations

Iti este securizata aplicatia web? Cunosti termenul si semnficatia de session fixation? Ii doresti sa afli mai multe despre asta?

Cand vine vorba de securitate este mereu loc de imbunatatiri, deoarece la fel cum tehnologia avanseaza pe zi ce trece, in acelasi mod gasesc si hackeri posibilitati prin care iti pot afecta securitatea aplicatiei web.

Motiv pentru care e important sa cunosti tipurile de atacuri cibernetice si ce poti face pentru a le preveni.

Ce este Session Fixation?

Un alt tip de atac cibernetic este Session Fixation. Acesta ii permite unui atacator atace sesiunea valida a unui utilizator. Atacul exploreaza o limitatie, in sensul in care aplicatia web coordoneaza sesiunea de ID, care este partea vulnerabila a unei aplicatii web.

In momentul in care un utilizator se autentifica, nu i se atribuie o sesiuna noua de ID, iar acest proces face posibil sa folosesti o sesiune de ID deja existenta. Atacul e bazat pe obtinerea unei sesiuni valide, in care utilizatorul se autentifica, urmand ca atacatorul sa preia controlul asupra sesiunii. Atacatorul trebuie sa furnizeze o sesiune ID web veritabila, iar pentru aceasta incearca sa faca victima sa foloseasca browserul.

Good to know! Acest tip de atac, tinteste sesiunile stabilite in browser-ul victimei, ceea ce inseamna ca atacul incepe inainte ca utilizatorul sa se autentifice.

Tehnici de executare

Pentru a executa atacul exista mai multe tehnici, in functie de token-urile folosite pentru sesiunile aplicatiei web.

Sesiune ID intr-un cookie

<META> tag – Acesta este considerat si un atac de tip injectare cod. Un atac care foloseste aceasta tehnica este mult mai eficient. Asta deoarece este imposibil sa dezactivezi procesarea acestor etichete in browsere.

Client-side script – Majoritatea browserelor suporta tipul de executie client-side scripting. Pentru aceasta tehnica, atacatorul poate folosi atacuri de injectare cod, ca de exemplu atacul XSS (cross-site scripting) pentru a insera un cod malicious in hyperlink-ul trimis victimei. Astfel e fieaza o sesiune ID in cookies.

HTTP header response – Pentru aceasta metoda, se cerceteaza raspunsul server-ului pentru a fixa sesiunea ID in browser-ul victimei. Astfel, atacatorului ii este permis sa insereze valoarea sesiunii ID in cookie, incluzand parametrul Set-Cookie in raspunsul header-ului HTTP, iar apoi este trimis catre browser-ul victimei.

Sesiuni token in argumentul URL-ului

Sesiunea ID ii este trimisa victimei sub forma unui link prin care victima acceseaza aplicatia web printr-un URL daunator.

Sesiuni token ascunse intr-un formular

Pentru aceasta tehnica, e necesar ca victima sa fie pacalita in autentificarea unui server web tinta, folosind un formular de login, care este creat de atacator. Formularul poate fi gazduit in emailul formatat HTML sau in server-ul web daunator.  

Exemple explicative

 

  • Client-side scripting

 

Procesul pentru acest tip de atac care foloseste scripturile de executie in browserul victimei care nu apar sub forma unui argument in URL, dar in cookie-uri. Atacatorul poate insera un cod JavaScript in URL care va fi efectuat in browser-ul victimei.

http://website.kom/document.cookie=”sessionid=abcd”;

 

  • HTTP header response

 

Prin interceptarea pachetelor de schimb intre aplicatia web si client, se face inserarea valoarei sesiunii ID in cookie prin manipularea raspunsului server-ului.

 

  • <META> tag

 

Codul de injectare e necesar sa ie introdus in URL-ul care va fi trimis victimei.

http://website.kon/<meta http-equiv=Set-Cookie content=”sessionid=abcd”>

 

 

  • Formularul

 

Pentru atacul in formular, atacatorul trebuie sa stabileasca o conexiune vertabila cu server-ul web. Mai apoi, se elibereaza sesiunea ID, sau atacatorul creaza o noua sesiune. Atacatorul trimite link-ul cu conexiunea gazduita victimei, pentru a fi accesat de victima.

Timp in care server-ul web vede sesiunea are a fost deja stabilita, nemaifiind nevoie de una noua. Astfel victima isi introduce datele server-ului web, iar atacatorul poate accesa contul utilizatorului.

Daca iti doresti sa inveti cum sa oferi aplicatiei web o securizare mai solida, gasesti aici datele mele de contact!