Web lapas drošības pamati
Autors: alijs (alijs (at) navigator.lv)Kategorija: Drošība
Drošības problēmas
Laiku pa laikam var dzirdēt par to, ka viena vai otra web lapa tikusi uzlauzta, cietusi no uzbrucējiem utt. Citos gadījumos tā var būt neliela privāta mājas lapa, citos, iespējams, kas daudz nopietnāks. Tomēr visus šos gadījumus apvieno kaut kas kopīgs - ja jau web lapa tikusi uzlauzta, varam secināt, ka ir bijušas kādas problēmas ar tās drošību. Turklāt neatkarīgi no tā, vai tā ir liela, vai maza web lapa, tās izstrādātājiem šāda uzlaušana var sagādāt pamatīgas galvassāpes.
No kā tad rodas drošības problēmas, kas ļauj web lapu uzlauzt. Pirmkārt, no nepareizi uzrakstīta koda. Uz servera izpildāma koda (PHP, ASP, u.c.) klātbūtne jau pati par sevi signalizē, ka web lapas drošībā teorētiski iespējamas kādas problēmas. Pilnīgi statiskas lapas, kuras sastāv tikai no tīra HTML praktiski gandrīz nav iespējams uzlauzt. Vārds "gandrīz" nav lietots nejauši, jo principā pastāv iespējas dažādos veidos uzbrukt fiziskajam web serverim un atsevišķos gadījumos šādi var uzlauzt arī tīru HTML saturošas web lapas, tomēr šeit vairāk koncentrēsimies uz potenciālo bīstamību, ko rada kods.
Uzticēties nedrīkst nevienam
Mūsdienās nevienu nepārsteidz dinamiskas web lapas, kas ļauj piereģistrēties, ielogoties, rakstīt forumā, piedalīties aptaujās, spēlēt spēles un daudzos citādos veidos iedarboties uz web lapu, dinamiski mainot tās saturu. Kā likums, šādos gadījumos serverim ir nepieciešams zināt, ko tieši lietotājs dara, lai varēti atbilstoši reaģēt, mainot lapas saturu, tādēļ no web lapas uz serveri tiek sūtīti kaut kādi dati. Iedziļinoties tehniskajās detaļās, tie var būt, piemēram, POST, GET, COOKIE dati atkarībā no mājas lapas realizācijas un šo datu mērķa. Katram no šiem datu veidiem ir sava specifika, bet ļoti būtiska tos vienojoša iezīme ir sekojoša - lietotājam ir iespējams šos datus patvaļīgi mainīt. Tieši šī iespēja arī rada lielāko daļu drošības problēmu.
Lapas izstrādātāji parasti akli nepaļaujas uz to, ka saņemtie dati būs tieši tie, kas tiek sagaidīti, ja runa ir, piemēram, par reģistrācijas formas datiem. Pieprasot lietotājam ievadīt vārdu, programmētājs, visticamāk būs paredzējis, ka lietotājs neuzmanības pēc vai speciāli var ievadīt vārda vietā kādu simbolu virkni, kas var izrādīties potenciāli bīstama, piemēram, kā SQL injekcija. Bet, ievietojot formā kādu slēptu lauku ar tipu hidden, kas paredzēts konstantu datu nodošanai, programmētāji nereti piemirst pārliecināties, ka lauka saturs tiešām nav mainījies. Protams, vienkāršam lietotājam slēpto formas lauku vērtības nav paredzēts mainīt, tomēr tas nenozīmē, ka viņš to nevar izdarīt.
Un viņš var pietiekoši vienkārši. Lai to izdarītu, nepieciešams tikai saglabāt lapas HTML kodu (kuru var redzēt jebkurā pārlūkā) uz lokālā diska, izmainīt lauku vērtības uz vēlamajām, atvērt lokāli saglabāto lapu interneta pārlūkā un nosūtīt formas datus.
Līdzīgi ir ar cookie datiem. Praksē izplatīta pieeja ir, piemēram, saglabāt cookie datos lietotāja izvēlēto valodu. Šādā gadījumā, lietotājam atverot web lapu, cookie dati tiek nolasīti un serveris zina, kādā valodā jāattēlo web lapa. Tomēr jāatceras, ka cookie principā ir parasti teksta faili, kas glabājas uz lietotāja datora, tādēļ viņam ir iespēja tos pamainīt.
Varbūt pirmajā brīdī kādam tas nešķiet nekas slikts - ja cookie datos ir saglabāta valoda "LV" un tā tiks pamainīta uz "EN" vai "XX", tad lietotājs vienkārši redzēs web lapu angļu valodā, vai sliktākajā gadījumā neredzēs vispār, ja tāda valoda nebūs definēta. Ja kods servera pusē ir uzrakstīts pareizi, tad tā arī ir. Bet atsevišķos gadījumos šādu pieeju iespējams izmantot, lai apskatītu uz servera esošu failu saturu un pat izpildītu uz servera savu kodu.
Svarīgākie drošības principi
Nevienam neuzticēties. Protams, skan pārspīlēti, bet, izstrādājot web lapu, tik tiešām nedrīkst uzticēties nekam, kas var tikt izmainīts lietotāja pusē, vai tie būtu formas dati, vai cookie. Viss ir jāpārbauda.
Der atcerēties principu - "aizliegts ir viss, kas nav atļauts", un izmantot to web lapas izstrādē, atļaujot lietotājam tikai konkrētas darbības, kas neapdraud drošību.
Lai nu kā - nekas nav 100% drošs. Pastāv uzskats, ka uzlauzt iespējams jebkuru web lapu un programmētāja uzdevums īstenībā ir parūpēties, lai uzlaušanas process būtu pārāk sarežģīts un dārgs, salīdzinot ar iespējamajiem ieguvumiem.
Lai pievienotu komentāru, autorizējies!


SĀKUMS
RAKSTI