Ne postoji 100 % sigurna web stranica

Ne postoji stvar koja se zove 100 % sigurna web stranica. Tko vam nudi tu brojku, prodaje nešto drugo, a brojka je upravo ono što ga odaje.

Ono što postoji jest stranica koju je skuplje provaliti nego što od nje ima koristi, koja pri otkazu jednog dijela popušta umjesto da se sruši i koja se može vratiti u poznato ispravno stanje bez nagađanja. To je cijeli cilj. Sve niže služi njemu, a svaki je sloj pisan uz pretpostavku da je sloj ispred njega već pao.

Ovaj se tekst nastavlja na površinu napada u 2026., koja je namjerno pokrila prijetnje i tu stala.

Perimetar

Stavite vatrozid za web aplikacije (WAF) i CDN ispred izvorišnog poslužitelja, da se promet pregledava na rubu mreže, a ne na stroju koji ujedno vrti vašu aplikaciju. Botnet mreže, sonde za ubrizgavanje i volumetrijske poplave filtriraju se prije nego što potroše išta što plaćate.

Uključite HSTS umjesto da se zadovoljite valjanim certifikatom. Zaglavlje Strict-Transport-Security govori pregledniku da za ovaj poslužitelj koristi HTTPS i da nikada ne prihvati pad na nesigurnu vezu, čime se zatvara prozor u kojem se prvi nešifrirani zahtjev može presresti.

Držite IP adresu izvorišta izvan javnog pogleda. Ako izvorište odgovara na izravne zahtjeve s bilo koje adrese, WAF ispred njega je preporuka, a ne zaštita - namjestite vatrozid poslužitelja tako da mu samo rasponi posrednika smiju doći na portove 80 i 443, a administratorski portovi javno nisu dostupni uopće.

Identitet i pristup

Na lozinke se kao samostalan faktor ne vrijedi oslanjati. Tražite barem TOTP, a gdje račun može mijenjati nešto važno i hardverske ključeve FIDO2/WebAuthn - hardverski su ključevi jedini široko dostupan faktor koji se krađi identiteta odupire, a ne je samo usporava.

Dodijelite najmanje što nekome treba za današnji posao i oduzmite kada posao završi. Većina kompromitiranih pristupnih podataka u malim projektima pripada vanjskom suradniku čiji je angažman završio prije osamnaest mjeseci i kojemu se nitko nije sjetio zatvoriti pristup.

Maknite administraciju s predvidljivih putanja i stavite kontrolu pristupa ispred nje, a ne samo unutar nje - popis dopuštenih adresa, tunel ili posrednik svjestan identiteta. Obrazac za prijavu do kojeg dolazi cijeli internet obrazac je koji će cijeli internet i isprobati.

Kod i lanac opskrbe

Pokrenite analizu sastava softvera u cjevovodu, a ne ručno jednom u tromjesečju. Paketi trećih strana odgovorni su za većinu kompromitacija web aplikacija, a korisno je svojstvo automatizacije to što reagira onog dana kada je upozorenje objavljeno, a ne onog tjedna kada netko sljedeći put pogleda.

Provjeravajte i parametrizirajte na poslužitelju. Provjera na strani klijenta značajka je upotrebljivosti; zaobiđe je svatko tko otvori razvojne alate. Svaki upit koji dotiče korisnički unos koristi pripremljene izjave, bez iznimke, jer iznimka je upravo mjesto na kojem ubrizgavanje živi.

Držite tajne izvan izvornog koda i izvan korijena weba. Datoteke okruženja, ključevi i lozinke baze žive izvan direktorija koji poslužitelj može posluživati, a poslužitelj je izričito namješten da odbija /.env i /.git - izložen direktorij .git predaje cijelu povijest aplikacije, uključujući pristupne podatke koje je netko jednom uključio u repozitorij i uklonio ih sljedećom promjenom.

Kada ipak pođe po zlu

Držite sigurnosne kopije po pravilu 3-2-1: tri kopije, dvije vrste pohrane, jedna izvan lokacije - i neka ta izvan lokacije bude nepromjenjiva, kako ucjenjivački softver koji dosegne vašu infrastrukturu ne bi dosegnuo i vaš oporavak. Zatim s njih redovito vraćajte podatke. Kopija s koje nitko nikada nije vratio podatke pretpostavka je, a ne zaštita.

Postavite zaglavlja odgovora koja ograničavaju što kompromitirana stranica smije: Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. CSP je ono u što se isplati uložiti pravi trud - stroga politika znači da ubrizgana skripta nema odakle se učitati ni kamo poslati.

Šaljite zapise izvan stroja koji ih stvara. Događaji prijave, promjene datoteka i pogreške baze idu negdje gdje napadač ne upravlja, jer prvo što sposoban uljez uredi jest zapis koji bilježi upad. Postavite dojave na dosadne signale: ponovljene neuspjele prijave, datoteku promijenjenu izvan isporuke, novi administratorski račun.

Što "sigurno" zapravo znači

Nije stanje i nije kupnja. To je svojstvo sustava u kojem svaki sloj pretpostavlja proboj ispred sebe i ograničava dokle taj proboj doseže - i u kojem netko redovito provjerava vrijede li pretpostavke i dalje.

Poštena verzija obećanja nije da se ništa neće dogoditi. Poštena je verzija da je ono što se dogodi ograničeno, vidljivo i popravljivo.