De ce codul generat de AI are nevoie de revizie umană (și de ce e perfect normal)
De ce codul generat de AI are nevoie de revizuire umană (și de ce e normal să fie așa)
Dezvoltarea software-ului intră într-o eră nouă. Unelte ca Claude sau ChatGPT transformă o idee în cod funcțional în câteva zile. Descrie o funcționalitate, aplici modificările sugerate, ajustezi și lansezi. Viteza asta schimbă total ritmul de lucru.
Dar există un risc ascuns.
Am analizat recent un tool intern simplu, construit rapid cu AI. Nu era nimic critic, dar reflecta perfect cum lucrăm în 2024. Nu am găsit erori dramatice de genul "AI-ul a înnebunit". Problema era mai banala: 28 de vulnerabilități, majoritatea legate de securitate, din categorii cunoscute de pe lista OWASP Top 10 de peste 20 de ani.
Nu e despre AI periculos. E despre cum viteza mare de dezvoltare sare peste gândirea structurală care evită problemele.
Problema nu e AI-ul, ci întrebările pe care nu le pui
Codul era solid la suprafață. Arhitectura era logică. Componentele bine împărțite. Bibliotecile alese corect. Dacă l-aș fi scris eu manual într-un weekend, ar fi arătat la fel.
Diferența e în stratul de dinainte de codare.
AI-ul excelează la ce-i ceri. "Fă-mi un sistem de gestionare utilizatori" – și primești exact asta. Dar nu întreabă singur: Cine accesează? Ce date sunt sensibile? Unde e autentificarea? Ce se întâmplă dacă cineva sare peste interfață?
Generează funcționalități. Nu arhitectură securizată care să te lase să dormi liniștit.
Exemplu clar: Funcția admin fără protecție
Imaginează-ți o funcție serverless pentru operațiuni admin – creare utilizatori, resetare parole, ștergere conturi. Echipa a decis bine să țină credentialele puternice pe server, nu în browser.
Dar funcția nu verifica autentificarea deloc.
Nu era autentificare slabă. Era zero. Oricine deschidea DevTools, găsea URL-ul și trimitea un POST putea crea conturi admin, reseta parole sau ștergea baza de date.
Frontend-ul bloca butonul admin pentru utilizatori obișnuiți. Pare securizat. Dar securitatea bazată pe UI e iluzie.
E o clasică ocolire de autorizare, din topul vulnerabilităților din 2003. AI-ul n-a semnalat-o pentru că promptul era "fă o funcție care lasă adminii să creeze utilizatori". Funcția face asta. Nu specifica să blocheze non-adminii.
Lectia esențială: AI-ul nu știe ce ai omis să ceri.
Baza de date securizată doar teoretic
Alt caz tipic. Baza ta are politici de securitate la nivel de rând – limitează accesul la date pe baza identității utilizatorului. Bun model, mai ales cu API key în JavaScript pe frontend.
Un inginer a cerut AI-ului să adauge suport multi-user. AI-ul a creat tabele noi cu RLS activat. Perfect.
Dar cele cinci tabele vechi cu date reale? Nespuse. Migrația nu verifica, nu activa RLS, nu menționa nimic.
Rulezi deploy pe infrastructură nouă și tabelele noi sunt blocate, dar cele vechi deschise oricui cu acces la endpoint.
AI-ul n-a greșit. A rezolvat problema îngustă fără să ridice presupunerea implicită: vrei securitate peste tot?
Ce schimbă asta în practica ta
Nu renunța la AI în dezvoltare. Viteza contează. Dar adaugă revizuire de la ingineri cu experiență, focusată pe arhitectură, nu doar pe sintaxă.
Ce funcționează concret:
Creează un checklist de securitate înainte de start. Întrebări ca: Cine apelează endpoint-ul? Ce se întâmplă fără permisiune? Datele sunt publice? Toate tabelele au RLS? Notează-le ca presupuneri.
Lasă seniorii să facă threat modeling, nu review linie cu linie. Cele 28 de probleme erau erori arhitecturale. AI-ul generează cod. Oamenii gândesc securitatea.
Specifică auth în prompturi. Nu "fă endpoint de user management", ci "fă endpoint de user management accesibil doar adminilor logați, și explică asumările de autentificare". Îi dai direcție.
Testează autorizarea separat. Verifică că utilizatorii neautentificați nu pot acționa, nu doar că cei autentificați pot.
Modelul care merită reținut
AI-ul nu produce cod nesigur. Produce exact ce ceri și ratează ce uiți să specifici.
E un plus, nu defect – tool-ul ascultă promptul, nu inventează cerințe. Dar responsabilitatea trece la tine. Nu angajezi AI-ul să gândească securitate. Îl folosești să execute deciziile tale rapid.
În cazul meu, a fost nevoie de un om să zică "endpoint-ul ăsta cere auth". Fixul a durut minute. Vulnerabilitatea veche de 20 de ani s-a lovit de fluxul modern – și fluxul a câștigat, datorită atenției umane.
Asta e formula sustenabilă: AI pentru viteză, oameni pentru arhitectură. Ambele esențiale.
Vrei să eviți astfel de capcane în codul tău? La NameOcean, am ajutat multe startup-uri în creștere să scape de datoriile tehnice din feature-uri lansate rapid. Platforma noastră de cloud hosting include securitate structurală – rate limiting integrat, management API key și audit logging – care funcționează automat, indiferent dacă le ceri sau nu. Un stres în minus când echipa ta gonește cu dezvoltare rapidă.