Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Failų įkėlimo moduliai yra viena iš silpniausių žiniatinklio programų grandžių. Dėl bet kokių padarytų klaidų, net ir tas, kurias laikote nedidelėmis, serverio valdymas gali patekti tiesiai į kibernetinio užpuoliko rankas. Dėl šios priežasties programinės įrangos kūrėjai turi žinoti dažniausiai daromas klaidas ir kai kuriuos atakos būdus, kurie gali atsirasti.

Taigi, kas yra kliento pusės klastojimas? Kaip galite su tuo kovoti, kad jūsų svetainės ir naudotojai būtų saugūs?

Kas yra kliento pusės klastojimas?

Kliento pusės klastojimas yra pagrindinė visų žiniatinklio programų atakų koncepcija. Paprasčiau tariant, tai reiškia, kad nebegalite pasitikėti jokiais duomenimis, kuriuos siunčiate vartotojui. Be to, kliento pusės klastojimas yra vienas iš saugaus taikomųjų programų kūrimo pagrindų. Jei išnagrinėsite failų įkėlimo modulį, su kuriuo susiduriate, ir svarstote apie kliento klastojimą, duomenys, kuriais negalite pasitikėti, apima:

instagram viewer
  • Įkelto failo pavadinimas.
  • Įkelto failo turinio tipas.

Šie du daiktai yra kur turite galimybę įtraukti į baltąjį sąrašą kaip programinės įrangos kūrėjas. Įkelto failo pavadinimo duomenyse gali būti bet kas, su klastojimu kliento pusėje. Turint įkelto failo turinio tipo duomenis, net jei užpuolikas įkelia .exe failą, sistemoje šis failas gali būti rodomas kaip vaizdas/jpeg.

Failo plėtinys ir baltas sąrašas

Kuriant failų įkėlimo modulius pirmiausia reikia padaryti failo plėtinio įtraukimo į baltąjį sąrašą procesas. Pavyzdžiui, vartotojas nori įkelti failą pavadinimu "muo.jpeg". Turite įsitikinti, kad šis failo plėtinys, kurį vartotojas nori įkelti, yra .jpeg. Tam sistema turėtų patikrinti įkeltą failą ir išsiaiškinti, ar tai vienas iš leidžiamų failo plėtinių. Norėdami suprasti, kaip tai padaryti, išnagrinėkite šį paprastą PHP kodą:

$failo_dalis = kelio informacija($failo pavadinimas);
jungiklis($file_parts['plėtinys'])
{
atveju "jpg":
pertrauka;

atveju "šikšnosparnis": // Arba exe, dll, taip ir kt.
pertrauka;

atveju "":
atvejuNULL: // Nėra failo plėtinio
pertrauka;
}

Tai galite padaryti naudodami kodo bloką, panašų į aukščiau pateiktą, arba galite naudoti klases ir funkcijas, kurias suteikia jūsų naudojama sistema.

Būkite atsargūs ir nesukurkite failo plėtinių duomenų analizuodami failo pavadinimą pagal taško (.) simbolį, nes užpuolikas gali apeiti šį patikrinimo veiksmą naudodamas failo pavadinimą, pvz., "muo.jpeg.php".

Kas yra turinio tipo informacija?

Turinio tipo informacija yra informacijos dalis, siunčiama kiekvieno failo įkėlimo HTTP užklausoje. Interneto naršyklė aptinka šią informaciją ir prideda ją prie išsiųstos užklausos. Užpuolikas gali bandyti pakeisti informaciją kliento pusės klastojimu ir apeiti serverio pusės patvirtinimus. Šiame etape kūrėjams reikia kontrolės mechanizmo, kad galėtų patvirtinti turinio tipo informaciją. Vien to nepakaks; vis dėlto kūrėjams tai svarbu atkreipti dėmesį.

Tarkime, kad užkoduojate mechanizmą, leidžiantį tinkamai patikrinti failo plėtinį, ir priimate tik failus su plėtiniu .jpeg. Be šio atsargumo mechanizmo, galite patikrinti turinio tipo informaciją ir priimti tik failus su vaizdo / jpeg informacija, papildomas apsaugos lygis nuo kibernetinės atakos

SWF Flash failai ir atakos veiksmai

Failo plėtinys ir turinio tipo duomenys nieko nereiškia interneto naršyklėms, kurios palaiko papildinius, pvz., „Adobe Flash Player“. Nors to grotuvo palaikymas nebepasiekiamas, vis tiek galima įdiegti tuos susijusius failus daugelyje sistemų, nors „Flash“ išlieka saugumo rizika. Sistemoje, kuri nesiėmė atitinkamų atsargumo priemonių, galima iškviesti Flash failą su žyma, neatsižvelgiant į jos plėtinį. Tai sukels dar vieną rimtą saugumo problemą.

Kad galėtų imtis veiksmų, kūrėjai turi žinoti, kokius būdus gali imtis kibernetiniai nusikaltėliai. Štai kaip tai gali atsitikti:

  1. Piktybinis užpuolikas į tikslinę svetainę įkelia SWF (Adobe Flash failo formatą), pavadintą „image.jpeg“. Įkėlimo proceso metu baltojo sąrašo patvirtinime patvirtinama, kad užpuoliko įkeltas failas turi .jpeg plėtinį. Turinio tipo patvirtinimas yra apeinamas su klastojimu kliento pusėje. Įsivaizduokite, kad šis failas, kurį įkėlė grėsmės veikėjas, patenka į „www (taškas) target-site (taškas) com/images/images.jpeg“.
  2. Tarkime, užpuolikas turi svetainę, pavadintą užpuolikas (taškas) com. Užpuolikas iškviečia failą image.jpeg, įkeltą į tikslinę šios svetainės svetainę, naudodamas žyma su Application/x-shockwave-flash tipo priskyrimu.
  3. Nekaltas vartotojas prisijungia prie užpuoliko (dot) com. Ši svetainė iškviečia SWF failą adresu www (taškas) target-site (taškas) com/images/image.jpeg ir vykdo SWF duotas komandas.
  4. Taip kibernetinis užpuolikas gali sukurti HTTP užklausos veiksmus tikslinės svetainės (taško) com adresui, paprastiems vartotojams to nepastebėdamas. Pateikdamas šias užklausas, užpuolikas naudos nekalto vartotojo seansą ir aplenks CSRF patikrinimas.

Jei norite aiškiau suprasti šį atakos scenarijų, toliau nurodykite kodą HTML turinys, kurį vartotojui atsiuntė užpuolikas (taškas) com:

stilius ="aukštis: 1px; plotis: 1px;" duomenys ="www.target-site.com/images/image.jpeg" tipas ="aplikacija/x-shockwave-flash" leistiscriptaccess="visada" flashvars="c=skaityti&u = kažkas"

Vienas geriausių sprendimų yra pasiekti failus, įkeltus su failų įkėlimu per kitą subdomeną. Pagal pirmiau minėtą scenarijų statinius failus galite pasiekti ne iš to paties domeno, o iš kito padomenio taip: „http (dvitaškis)//file.target-site (taškas) com/images/image.jpeg“.

Kitas sprendimas yra pridėti Turinys-dispozicija: priedas informaciją į HTTP atsakymą, kai gaunate užklausą dėl prieigos prie failų, kuriuos norite įkelti.

Imkitės atsargumo priemonių dėl failų įkėlimo pažeidžiamumų

Bet koks failų įkėlimas, kurį vartotojai gali įkelti į svetainę, yra pavojingas, todėl tai yra viena iš problemų, į kurią kūrėjai turėtų skirti didžiausią dėmesį. Jei užpuolikai aptinka tokį pažeidžiamumą, jie gali atidaryti apvalkalą svetainėje ir lengvai išnaudoti serveryje esančią informaciją. Labai svarbu kontroliuoti visus vartotojų įkeltus failus, taikyti baltojo sąrašo metodus ir, jei įmanoma, paslėpti įkelto katalogo vietą.

Ir, žinoma, yra daug kitų papildomų veiksmų, kurių turite imtis norėdami apsaugoti savo svetainę, net jei imsitės visų rekomenduojamų atsargumo priemonių, kad įkeltumėte failų modulius. Vienas iš tokių žingsnių yra HTTP saugos antraščių naudojimas.