Nakon ovog poglavlja
Što ćete znati napraviti
- Povezati najčešće web ranjivosti s konkretnom obranom.
- Primijeniti sigurnosna zaglavlja i upravljanje tajnama.
- Uvesti jednostavan model prijetnji prije implementacije.
Jedan problem, jedna obrana
Validacija nije zamjena za encoding ni parametre
SQL injection sprječavamo parametriziranim upitima. XSS sprječavamo encodingom na izlazu i, gdje treba, sanitizacijom dopuštenog HTML-a. CSRF sprječavamo tokenom i sigurnim kolačićima. Broken access control sprječavamo provjerom prava nad konkretnim resursom.
Path traversal, SSRF i command injection traže stroge allowliste i izbjegavanje prosljeđivanja korisničkog unosa datotečnom sustavu, mreži ili shellu. Jedan univerzalni „sanitize“ ne postoji.
- Ulaz validirajte prema poslovnom pravilu.
- SQL vrijednosti vežite parametrima.
- HTML izlaz kodirajte prema kontekstu.
- Svaku zaštićenu radnju autorizirajte na serveru.
- Promjene zaštitite od CSRF-a.
Obrana preglednika
HTTPS i sigurnosna zaglavlja
HTTPS štiti povjerljivost i cjelovitost prometa. HSTS se uključuje tek kada cijela domena pouzdano radi na HTTPS-u. Content-Security-Policy ograničava izvore skripti i može znatno smanjiti posljedice XSS-a, ali treba je postupno testirati.
Content-Security-Policy: default-src 'self'; img-src 'self' https: data:; object-src 'none'; base-uri 'self'
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
Plan prije incidenta
Što štitimo, od koga i gdje može puknuti
Tajne ne pripadaju kodu, repozitoriju, slici zaslona ni logu. Učitavaju se iz varijabli okruženja ili upravljanog spremišta te rotiraju kada procure. Razvoj i produkcija koriste različite vjerodajnice.
Za svaku novu funkciju zapišite imovinu, aktere, ulazne točke, granice povjerenja, zloupotrebe i obrane. Razmislite o brisanju, izvozu, automatiziranom prometu, prevelikim zahtjevima i curenju kroz pogreške.
Imovina: privatne bilješke
Akteri: vlasnik, administrator, napadač
Ulazi: forma, API, upload
Prijetnja: korisnik mijenja tuđi ID u URL-u
Obrana: upit po id + user_id, test zabrane pristupa
Primijenite naučeno
Vježba: Pregled CRUD aplikacije
Napravite sigurnosni pregled svega što ste dosad izgradili.
- Za svaku rutu označite autentikaciju, autorizaciju i CSRF.
- Provjerite svaki SQL i svaki ispis korisničkog podatka.
- Dodajte ograničenja veličine, brzine i sigurne produkcijske pogreške.
Za provjeru i nastavak