Kako dizajnirati sigurne web obrasce: provjeriti, očistiti i kontrolirati

Iako se o cyber-sigurnosti često razmišlja u smislu baza podataka i arhitekture, velik dio snažnog sigurnosnog stava oslanja se na elemente u domeni front-end programera.

Za određene potencijalno razorne ranjivosti poput SQL ubrizgavanja i skriptiranja na više mjesta (XSS), dobro promišljeno korisničko sučelje prva je crta obrane.

Evo nekoliko područja koja treba usmjeriti na front-end programere koji žele pomoći u borbi protiv dobre borbe.

Upravljanje korisničkim unosom

Čitav lud slučaj može se dogoditi kada programeri izgrade obrazac koji ne kontrolira unos korisnika. Za borbu protiv ranjivosti poput ubrizgavanja važno je provjeriti ili sanirati unos korisnika.

Unos možete provjeriti ograničavanjem na poznate vrijednosti, na primjer upotrebom semantičkih vrsta unosa ili atributa povezanih s provjerom valjanosti u obrascima. Okviri poput Djanga također pomažu pružajući tipove polja u tu svrhu. Sanitizacija podataka može se izvršiti uklanjanjem ili zamjenom kontekstualno opasnih znakova, na primjer korištenjem dopuštene liste ili izbjegavanjem ulaznih podataka.

Iako to možda nije intuitivno, čak i podaci koje korisnik preda u svoje područje na web mjestu trebaju biti provjereni. Jedan od najbržih virusa koji se širio bio je crv Samy na MySpaceu (da, star sam), zahvaljujući kodu koji je Samy Kamkar uspio ubrizgati na vlastitu stranicu profila. Nemojte izravno vraćati bilo kakav ulaz na svoje mjesto bez temeljite provjere ili sanacije.

Za neke daljnje smjernice za borbu protiv napada injekcijama, pogledajte OWASP Injection Prevention Cheats Sheet.

Čuvajte se skrivenih polja

Dodavanje type="hidden"je primamljivo prikladan način sakrivanja osjetljivih podataka na stranicama i obrascima, ali nažalost nije učinkovit.

Pomoću alata poput ZapProxy, pa čak i alata za inspekciju u običnim starim web preglednicima, korisnici lako mogu otkriti ukusne komadiće nevidljivih informacija.

Skrivanje potvrdnih okvira može biti zgodan potez za stvaranje prekidača samo za CSS, ali skrivena polja malo doprinose sigurnosti.

Pažljivo razmotrite polja za automatsko popunjavanje

Kad vam korisnik odluči dati svoje osobne podatke (PII), to bi trebao biti svjestan izbor. Polja za automatsko popunjavanje obrazaca mogu biti prikladna - i za korisnike i za napadače. Eksploativi koji koriste skrivena polja mogu prikupiti osobne podatke koji su prethodno zabilježeni samodovršavanjem polja.

Mnogi korisnici nisu ni svjesni koje su informacije pohranjene u automatsko popunjavanje njihovog preglednika. Štedljivo koristite ta polja i onemogućite automatski popunjavanje obrazaca za posebno osjetljive podatke.

Važno je također odvagnuti svoj profil rizika u odnosu na njegove kompromise. Ako vaš projekt mora biti u skladu s WCAG-om, onemogućavanje automatskog dovršavanja može razbiti vaše podatke za različite modalitete. Više informacija potražite u odjeljku 1.3.5: Utvrđivanje svrhe unosa u WCAG 2.1.

Neka pogreške budu općenite

Iako se možda čini korisnim obavijestiti korisnike postoji li dio podataka, korisno je i napadačima. Kada imate posla s računima, e-poštom i osobnim podacima, najsigurnije je pogriješiti (?) Na strani manje. Umjesto da vratite "Vaša lozinka za ovaj račun nije točna", pokušajte s dvosmislenijim povratnim informacijama "Netočni podaci za prijavu" i izbjegavajte otkrivanje je li korisničko ime ili e-adresa u sustavu.

Da biste bili korisniji, pružite istaknuti način kontaktiranja čovjeka u slučaju da se pojavi pogreška. Izbjegavajte otkrivanje podataka koji nisu potrebni. Ako ništa drugo, za ime boga, ne sugerirajte podatke koji se podudaraju s korisničkim unosom.

Budi loš momak

Kad razmišljate o sigurnosti, korisno je napraviti korak unatrag, promatrati prikazane informacije i zapitati se kako bi ih zlonamjerni napadač mogao iskoristiti. Igraj se vražjeg zagovornika. Kad bi negativac vidio ovu stranicu, koje bi nove informacije dobio? Prikazuje li pogled neke osobne podatke?

Zapitajte se je li sve na stranici zapravo potrebno za istinskog korisnika. Ako nije, uredite ga ili uklonite. Manje je sigurnije.

Sigurnost započinje na ulaznim vratima

Ovih dana postoji puno više preklapanja između kodiranja na prednjem i stražnjem kraju. Da biste stvorili dobro zaokruženu i sigurnu aplikaciju, pomaže općenitom razumijevanju načina na koji napadači mogu nogom ući u ulazna vrata.