Miksi AI-koodisi kaipaa ihmisen tarkistusta – ja miksi se on ihan fine?
Miksi AI:n generoima koodi kaipaa ihmisen tarkistuksen (ja miksi se on ihan fine)
Ohjelmistokehitys elää nyt villiä aikaa. Työkalut kuten Claude ja ChatGPT lyhentävät ideasta toimivaan koodiin päiviä viikkojen sijaan. Kerrot ominaisuudesta, hyväksyt muutokset, hiot ja puskeat tuotantoon. Nopeus on todella mullistavaa.
Silti on sudenkuoppa.
Tuoreeltaan kävin läpi sellaista koodia, joka syntyi juuri näin – simppeli sisätyökalu, ei mikään kriittinen systeemi, mutta tyypillinen esimerkki siitä, miten koodia paiskitaan ulos 2024. Ongelmat eivät olleet scifi-tyyppisiä AI-mokailuja. Ne olivat arkipäiväisiä: 28 erilaista ongelmaa, enimmäkseen tietoturvaan liittyviä. Sellaisia, jotka pyörivät OWASP Top 10 -listalla jo 2000-luvun alusta.
Tämä ei ole tarina AI:n vaarallisuudesta. Kyse on siitä, miten nopea kehitys ehtii edelle harkitulta rakenteelta, joka estää ongelmat.
Ongelma ei ole AI, vaan kysymys jota et esittänyt
Koodi oli muuten laadukasta. Arkkitehtuuri piti kutinsa. Komponentit oli jaettu fiksusti. Kirjastot sopivia. Jos olisin tehnyt saman itse viikonloppuna, ero ei pistäisi silmään heti.
Ero on metatasossa. Siellä, missä mietitään ennen ensimmäistä riviä.
AI hoitaa pyynnöt mallikkaasti. "Rakenna käyttäjänhallinta" – saat käyttäjänhallinnan. Mutta se ei kysy: Kenellä on pääsy? Mikä data on arkaluontoista? Missä autentikointi tapahtuu? Entä jos joku kiertää frontin?
AI tuottaa ominaisuuksia. Ei unettomia öitä estävää turva-arkkitehtuuria.
Esimerkki: Suojaamaton admin-toiminto
Kuvittele serverless-funktio, joka hoitaa admin-juttuja: käyttäjien luonti, salasanojen resetointi, tilien tuho. Tiimi piti vahvat tunnukset serverillä, ei selaimessa. Hyvää harkintaa.
Funktioon ei ollut yhtään autentikointia.
Ei heikkoa tai väärää. Nollia. DevTools auki, endpoint-tiedossa, POST-pyyntö – ja kuka tahansa luo admin-tilin, resetoi salasanat tai tyhjentää tietokannan.
Frontissa oli nätisti roolipohjainen nappulanpiilotus. Tarkoitus oli vakaa. Turha se oli – UI-turva on harhaa.
Tämä on klassinen authorization bypass, listalla vuodesta 2003. AI ei nostanut hälytystä, koska prompt oli: "Rakenna funktio, jolla admin luo käyttäjiä." Se tekee sen. Ja sallii muitakin, kun et sanonut estää.
Ydin: AI ei tiedä, mitä unohdit kysyä.
Tietokanta, joka näytti turvalliselta
Toinen tyypillinen moka. Tietokanta tukee row-level securityä (RLS), eli rajoituksia riveille käyttäjän mukaan. Hyvä malli, etenkin kun front lähettää API-avaimen JS:ssä.
Insinööri pyysi AI:lta monikäyttäjä-tukea. AI kirjoitti migraatiot uusille tauluille RLS:llä. Hienoa.
Mutta viisi vanhaa taulua – bisnesdatasi – jäi koskematta. RLS päällä vai ei? Migraatio ei tarkistanut, ei aktivoinut, ei maininnut.
Puske npm run db:push uuteen ympäristöön, ja uudet taulut lukossa. Vanhat auki kaikille, jotka tietävät endpointin.
AI ei mokannut. Se oli vain vajavainen. Ratkaisi kapean ongelman (uudet auth-taulut) ilman oletuksen nostatusta (haluatko kaiken suojatuksi?).
Mitä tämä tarkoittaa sun kehitykseen
Älä heitä AI:ta romukoppaan. Nopeus on kultaa. Iterointi ja puskaradio-ominaisuudet ovat arvokkaita. Mutta vastuulla on kokeneet tyypit, jotka tarkistavat arkkitehtuurin, ei vain syntaksin.
Näin teet sen toimivaksi:
Laadi turvalista ennen koodausta. Kysy: Kenellä pääsy endpointiin? Mitä tapahtuu ilman lupaa? Onko data julkinen? Tarvitseeko jokainen taulu RLS:n? Dokumentoi oletukset, älä löydä vasta koodarissa.
Anna seniorit mallintaa uhkia, ei rivityskoetta. Mun 28 ongelmaa eivät olleet kirjoitusvirheitä. Arkkitehtuurin puutteita. AI hoitaa koodin, ihmiset turvan ajattelun.
Tee autentikointi eksplisiittiseksi promptissa. Ei "rakenna käyttäjä-endpointti", vaan "rakenna käyttäjä-endpointti vain kirjautuneelle adminille, dokumentoi autentikointi." Työkalu alkaa perustella.
Testaa autorisointi erikseen. Kirjoita testit, jotka varmistavat, että luvattomat eivät voi – ei vain että luvatut voivat.
Ymmärrettävä kuvio
AI ei tuota turvatonta koodia. Se toteuttaa tarkasti mitä pyydät, mutta ei huomaa unohtamiasi juttuja.
Tämä on vahvuus, ei bugi. Et halua AI:n keksivän vaatimuksia. Vastuusi kasvaa. AI ei mieti turvaa puolestasi. Se skaalaa sun turvaratkaisuja.
Koodini kaipasi ihmistä sanomaan: "Tähän endpointiin tarvitaan autentikointi." Korjaus kesti minuutteja. 20-vuotias haavoittuvuus kohtasi 2024-työnkulan – ja workflow voitti, kun kokenut katsoi.
Tämä on malli lähitulevaisuuteen: AI nopeuteen, ihmiset arkkitehtuuriin. Molemmat pakollisia.
Haluatko välttää nämä samat kuviot sun koodeissa? NameOceanissa olemme nähneet startupien kamppailevan teknisen velan kanssa pikakehityksestä. Meidän cloud hosting -alustamme on rakennettu niin, että turva on sisäänrakennettua: rate limiting, API-avaimien hallinta ja audit-logit toimivat ilman erikoispyyntöjä. Yksi huoli vähemmän, kun tiimi puskee täysillä.