
Web sve više stasava u najrasprostranjeniju aplikacijsku platformu na svijetu. Koristeći web-browser imamo osjećaj da više ne koristimo web-stranicu, nego neki program, pa se tako mijenjaju i naša očekivanja prema aplikaciji, navike korištenja, ali i budnost i zdrava sumnjičavost koju smo nekoć imali u radu sa webom, dok je još bio „samo“ web.
Od internetskog bankarstva, pa do društvenih mreža sve je više mjesta na kojima prepuštamo nepoznatom krajnjem korisniku da u naš informatički sustav zapisuje vlastiti sadržaj. Korisnik nam je pri tome potpuno nepoznat; ne znamo njegove vještine rada na računalu, njegovu dobronamjernost, njegovu percepciju onoga što se od njega traži. Stoga čudi, što se na tako mnogo mjesta korisniku dopušta odnosno vjeruje previše.
Svako mjesto u kojem korisniku dajemo priliku da nešto upiše, potencijalna je točka upada u vašu web-aplikaciju, pa je zato nužna temeljita validacija unosa. U nedostatku resursa, developeri ponekad posežu za validacijom na klijentskoj strani, najčešće pomoću JavaScripta. Sva takva rješenja to zapravo i nisu, jer upotrebom elementarnih web-developerskih alata, kao što su npr. dodatak za Firefox “Firebug” klijentska validacija nestaje kao gumicom obrisana. Kod validacije sa serverske strane, svaki podatak kojeg smo dobili od nepoznatog korisnika treba temeljito validirati prije nego što se nastavi s njegovom obradom. Iako su aplikacijski frameworkovi opremljeni raznim mehanizmima validacije, nije na odmet pristupiti i izradi vlastitih validacijskih alata i tehnika kako bi izbjegli ranjivost od eventualnih propusta u “defaultnim” rješenjima.
U vrijeme kada se javlja sve veći broj web-browsera, te uređaja na kojima ih se koristi, dobra validacija unosa dodatno dobiva na značenju, jer se nije moguće pouzdati u poznavanje specifičnih problematika jednog ili dvaju vodećih browsera.
Od svih korsničkih unosa posebno treba voditi računa o tražilicama i poljima za unos formatiranog teksta. Tražilica, da bi bila funkcionalna mora podržavati elementarne logičke operatore – i/ili/ne, navodnike koji objedinju riječi u izraze i sl. Tražilice po definiciji pretražuju; najčešće bazu podataka koju ionako trebamo za prikaz sadržaja. Međutim zlonamjerno postavljen upit može usporiti rad sve do uskraćivanja usluge (denial of service) ili izvršiti vlastiti upit na bazu (code injection), a da ponekad pri tome niti ne bude zabilježen u logu kao nešto neobično.
-
Polja za unos obogaćenog teksta vrlo su popularno i elegantno rješenje u različitim aplikacijama u kojima je važan izgled korisničkog unosa. Za razliku od ostalih polja unosa, kod rich-text polja HTML tagovi su očekivani i propuštaju se, pa do izražaja dolazi vještina i kreativnost napadača i obrane. Jedni se svim silama trude razdvojiti dobronamjerni od zlonamjernog koda, dok drugi metodom pokušaja i pogreške obrnutim inženjerstvom pronalaze načine da zaobiđu zaštite prvih. Kako je nemoguće algoritamski utvrditi namjeru upotrebe određenog elementa, na softverskim arhitektima je zadatak minimaliziranja broja dopuštenih tagova i atributa, uz predviđanje što više potencijalnih smjerova napada.
U tom kontekstu, važno je i testiranje aplikacije, u kojem je ne treba “štediti”, već se staviti u položaj napadača, i korištenjem njihovih znanja i tehnika etičkim hakiranjem provjeriti i najneznatnije korisničke unose, a ne samo zadovoljiti se floskulom “Ma tko će to ići raditi!”. Samo tako web-aplikacija može postići razinu sigurnosti i pouzdanosti koja se očekuje od lokalnih aplikacija, što je nužan infrastrukturni preduvijet u trenutku ekspanzije web-aplikacija.
0 Komentari za ovaj tekst
1 Trackbacks za ovaj tekst
September 23rd, 2009 at 09:26
[...] imate podatke o vašim pretplatnicima, CRM, automatiziranu prodaju, podršku korisnicima… Jeste li integrirali te sustave u moćan e-mail marketinški sistem? Primjerice, korištenjem [...]
Vas Komentar