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 užpuolikas gali nustatyti arba sužinoti kito seanso ID. vartotojas, jie gali naudoti seanso prieigos raktą ir tada 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 nepriskiria jam naujo seanso ID prisijungdamas, užpuolikas gali tiesiog nustatyti tokį pat seanso ID ir turėti prieigą prie aukos paskyros.
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 negalės daryti įtakos prisijungusio vartotojo seanso ID. Taip pat galite sukonfigūruoti serverį, kad jis 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ų įdėta 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, kurią užpuolikas turi gauti, kiekį ir neleidžiate 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ą.