Svetainėse randama daug skirtingų saugos spragų tipų, vienas įdomus vadinamas „Seanso taisymas“. Seanso fiksavimas yra problema, kai užpuolikas gali paveikti seanso identifikatorių, dar žinomą kaip vartotojo seanso ID, ir naudoti jį, kad gautų prieigą prie savo paskyros. Šio tipo pažeidžiamumas gali veikti dviem būdais: jis gali leisti užpuolikui rasti arba nustatyti kito vartotojo seanso ID.
Kaip atliekama seanso fiksavimo ataka
Vartotojo seanso ID dažnai yra pagrindinė svetainės autentifikavimo dalis ir daugeliu atvejų yra vieninteliai duomenys, identifikuojantys konkretų prisijungusį vartotoją. Problema ta, kad jei užpuolikas gali nustatyti arba sužinoti kito vartotojo seanso ID, jis gali naudoti seanso prieigos raktą ir veikti kaip vartotojas.
Paprastai tai daroma apgaudinėjant vartotoją, kad jis spustelėtų tam tikro tipo sukčiavimo nuorodą. Pati nuoroda yra visiškai teisėta, tačiau apima kintamąjį, kuris nustato nurodytą seanso ID. Jei vartotojas prisijungia naudodamas seanso ID, o serveris jam nepriskiria naujo seanso ID Prisijungus, užpuolikas gali tiesiog nustatyti tą patį savo seanso ID ir turėti prieigą prie aukos sąskaitą.
Kitas būdas, kuriuo užpuolikas gali sužinoti aukos seanso ID, yra tai, kad jis rodomas URL. Pavyzdžiui, jei užpuolikas gali apgauti auką, kad atsiųstų jai nuorodą ir joje yra aukos seanso ID, užpuolikas gali naudoti seanso ID, kad pasiektų aukos paskyrą. Kai kuriais atvejais tai gali atsitikti visiškai atsitiktinai. Pavyzdžiui, jei vartotojas nukopijuoja URL su sesijos ID ir įklijuoja jį draugui arba forume, bet kuris nuorodą sekantis vartotojas bus prisijungęs prie vartotojo paskyros.
Seanso fiksavimo taisymas
Yra keletas šios problemos sprendimų ir, kaip visada, geriausias sprendimas yra įgyvendinti kuo daugiau pataisymų kaip gilios gynybos strategijos dalį. Pirmasis sprendimas yra pakeisti vartotojo seanso ID, kai jie prisijungia. Taip užpuolikas niekada negalės paveikti prisijungusio vartotojo seanso ID. Taip pat galite sukonfigūruoti serverį, kad jis visada priimtų tik jo sugeneruotus seanso ID ir aiškiai atmestų bet kokius vartotojo pateiktus seanso ID.
Svetainė turi būti sukonfigūruota taip, kad į URL niekada nebūtų įtraukta neskelbtinos naudotojo informacijos, pvz., seanso ID, ir ji turėtų būti įdėta į GET arba POST užklausos parametrą. Tai neleidžia vartotojui netyčia pažeisti savo seanso ID. Naudodami ir seanso ID, ir atskirą autentifikavimo prieigos raktą, padvigubinate informacijos kiekį, kurį užpuolikas turi gauti, ir neleisite užpuolikams pasiekti seansų su žinomais seanso ID.
Labai svarbu, kad visi galiojantys vartotojo seanso ID būtų anuliuoti, kai paspaudžiamas atsijungimo mygtukas. Seanso ID galima atkurti kiekvienoje užklausoje. Jei ankstesni seanso ID yra negaliojantys, užpuolikai taip pat negali naudoti žinomo seanso ID. Šis metodas taip pat žymiai sumažina grėsmės langą, jei vartotojas atskleidžia savo seanso ID.
Įgalinus kelis iš šių metodų, gilios gynybos strategija gali pašalinti šią problemą kaip saugumo riziką.