Modelul de amenințări
Lectură estimată: 4 minute
Estimare pentru text, la un ritm de 180 de cuvinte pe minut. Timpul pentru analizarea codului, exerciții și proiecte se adaugă separat și depinde de ritmul tău.
Problema pe care o vei rezolva: Formular cu trei suprafețe de risc
Laborator propriu: căutare în SQL, afișare de comentarii și actualizare de profil. Folosește doar date fictive și conturi create pentru test.
Rezultatul urmărit
Urmărește traseul input–bază–HTML. Verifică parametrizarea SQL, escapingul în contextul HTML și protecția cererii de modificare. Adaugă un test de acces cu alt cont.
Cum recunoști o soluție corectă
Inputul nu devine structură SQL, textul special nu este executat, iar profilul altui cont nu este modificat. Validarea singură nu înlocuiește autorizarea sau encodingul ieșirii.
Parcurge lecțiile în ordine și păstrează exercițiile în registrul descărcabil. Ultima lecție include atelierul de 40 de minute în care combini conceptele și testezi o variație a situației inițiale. Exemplele comerciale sunt fictive; nu reprezintă rezultate ale unor clienți.
Securitatea web nu e magie neagră rezervată experților. Marea majoritate a breșelor vin din câteva greșeli comune, bine documentate (lista OWASP Top 10). Dacă le cunoști și le eviți sistematic în cod, ești deja înaintea majorității aplicațiilor.
Modelul de amenințări — pe scurt
Înainte să aperi ceva, întreabă: ce date am (parole, date personale, date de plată, proprietate intelectuală)? Cine ar vrea să le fure sau să le strice (atacatori oportuniști, concurenți, angajați)? Pe unde ar putea intra (formulare, API, upload-uri, dependențe)? Răspunsurile îți spun unde să investești efort.
OWASP Top 10 — categoriile care contează pentru tine
- Control de acces defect (IDOR, escaladare de privilegii).
- Injection (SQL, comenzi) — date de utilizator amestecate cu cod.
- Configurare greșită (debug activ, headere lipsă, servicii expuse).
- Componente vulnerabile (dependențe vechi cu breșe cunoscute).
- Autentificare/sesiuni slabe.
- XSS și CSRF (tratate în lecțiile următoare).
Principii transversale
- Neîncredere în tot ce vine din exterior (input, headere, fișiere, chiar și date din baza ta scrise de utilizatori).
- Privilegiu minim: fiecare componentă primește exact accesul de care are nevoie.
- Apărare în adâncime: mai multe straturi, nu un singur zid.
- Fail secure: la eroare, blochează, nu permite.
Nu implementa singur criptografia
Hashing de parole, criptare, semnături, generare de token-uri — folosește ce oferă framework-ul și bibliotecile consacrate. Criptografia „făcută în casă" e aproape mereu greșită într-un mod pe care nu-l vezi.
Exercițiu
Pentru o aplicație pe care o cunoști, scrie un model de amenințări de o pagină: ce date sensibile există, cine ar fi interesat, care sunt „intrările" (formulare, API, upload-uri, dependențe), și 3 lucruri pe care le-ai verifica primele.
Greșeli frecvente
- Crezi că securitatea e „prea grea" și nu faci nimic.
- Te aperi de atacuri exotice și ignori cele 10 greșeli comune.
- Implementezi propria criptografie / hashing.
- Ai încredere în date „din baza ta" care au fost scrise de utilizatori.
De reținut
- Majoritatea breșelor = câteva greșeli comune (OWASP Top 10).
- Model de amenințări: ce date, cine, pe unde.
- Principii: neîncredere, privilegiu minim, apărare în adâncime, fail secure.
- Nu-ți scrie propria criptografie.
Pe scurt
Nu-ți trebuie să fii expert — îți trebuie să nu faci cele 10 greșeli frecvente. Începe cu un model de amenințări simplu.
Model de amenințări pentru un formular și fișiere private
Începe cu activele și granițele de încredere: datele utilizatorului, sesiunea, fișierele și serviciile externe. Pentru fiecare, întreabă cine poate trimite intrări și ce efect poate produce. Nu transforma securitatea într-o listă de headere bifate. Un fișier privat livrat dintr-un director public poate ocoli complet policy-ul controllerului. Prioritizează amenințările după impact și probabilitate în contextul aplicației, fără a inventa procente.
Exemplu de lucru
Activ;Amenințare;Control;Test
Cerere privată;acces alt user;policy;user B refuzat
Formular;date invalide;validare server;payload direct
PDF;URL public;storage privat;cale directă 404
Sesiune;furt sau fixare;configurație și regenerare;flux login/logout
Integrare;efect duplicat;idempotență;retry după succesInterpretarea rezultatului
Un control trebuie legat de un test observabil. Un scan automat poate ajuta, dar nu demonstrează toate regulile de business. Revizuiește modelul când adaugi exporturi, roluri sau acțiuni AI, fiindcă acestea pot crea granițe noi.
Exercițiu de consolidare
Adaugă un export CSV și identifică două amenințări care nu erau acoperite doar de formular.
Aplicație practică
Sarcina
Construiește un model de amenințări pentru formularul de ofertă.
Rezolvare orientativă și verificare
Enumeră datele, actorii, punctele de intrare și controalele. Prioritizează accesul, spamul și divulgarea datelor.
Greșeală de evitat
O listă generică de atacuri nu descrie riscul aplicației tale.
Documentație și surse
- OWASP Top 10 — OWASP
- Learn web development — MDN
Materiale pentru această lecție
Ți-a plăcut lecția? Continuă cursul complet
Ai citit o lecție gratuită. Celelalte lecții, aplicațiile practice și materialele se deblochează odată cu cursul.
149 lei
Plată unică, acces pe viață la toate cele 6 lecții.
Vezi ce conține cursul →