ASP.NET MVC - SQL įpurškimas

Turinys
Savo programose galime gauti įvairių tipų atakų, viena iš dažniausiai pasitaikančių ir galinčių sukelti didelę žalą. SQL įpurškimasŠi ataka apima pažeidžiamumų paiešką duomenų bazėse, siekiant išgauti informaciją arba įterpti vertes, kurios gali turėti įtakos jos funkcijoms.
Norėdami apsisaugoti nuo tokio tipo išpuolių, pirmiausia turime žinoti, iš ko jie susideda, tokiu būdu galime sužinoti, kokių atsargumo priemonių turime imtis.
Kaip minėjome, dėl šios atakos mūsų duomenų bazė neveikia tinkamai, todėl užpuolikas pristato duomenis, dėl kurių mūsų užklausos nepavyksta, atsižvelgiant į tam tikrus pažeidžiamumus, todėl užpuolikas gali pabandyti gauti schemas mūsų lentelių arba įvesti duomenis, kurie gali pakenkti operacijai, pvz įveskite vartotoją, kad galėtumėte pasiekti mūsų programos administravimo skyrių.
Vienas iš labiausiai paplitusių būdų yra tai, kad parametrus įvedame tiesiogiai, kai juos gauname iš valdiklių, pavyzdžiui, atliekame paiešką pagal kategorijas ir iš valdiklio gauname ieškomos kategorijos identifikatorių, jei jis praeina tiesiogiai jo neišvalius. gali generuoti ataką, rodančią užpuolikui visas esamas kategorijas.
Pažvelkime į šį nesaugų kodą:

DIDELIS

Mes galime pamatyti, kaip 6 eilutė sukuriame paieškos sąlygą ir tada 10 eilutė Mes perduodame jį tiesiogiai užklausą kuriančiam metodui, nepatyrusi akis gali nematyti jokių problemų, tačiau jei užpuolikas įveda šį parametrą: "1 arba 1 = 1" galite gauti visos mūsų lentelės sąrašą.
Kaip apsisaugoti?Būdas apsisaugoti šiuo atveju vyksta dviem pagrindiniais žingsniais Pirmas yra tai, kad mes negalime leisti, kad duomenys būtų vykdomi tiesiogiai, kai juos gauname, todėl prieš užklausą turime išvalyti parametrą tokiu metodu, kuris ieško neteisėtų simbolių, o jei juos surandame, nusiųskite naudotoją į 404 puslapį arba puslapis nerastas.
Pažvelkime į šį kodą, kaip galime filtruoti tai, ką gauname:

Čia apžvelgiame a įprasta frazė Tegul tik skaičiai yra tai, ką gauna mūsų valdytojas, nes priešingu atveju mes siunčiame pranešimą, kiekvienas gali sudaryti savo versiją, tačiau svarbu kontroliuoti, ką gaus mūsų programa.
The antra žingsnis siekiant išvengti atakų yra nedirbkite su pakaitos simboliu „*“ ir visada apribokite užklausas, kai laukiame įrašo, tokiu būdu išvengiame visų duomenų atskleidimo, jei kas nors sugebėtų viršyti mūsų prognozes.
Sugauti išimtisGaliausiai, jei į mūsų programą patenka neteisėtas parametras, turime bet kokia kaina išvengti klaidos pėdsako, nes jame yra neskelbtinų mūsų įrenginio duomenų ir jis gali būti panaudotas prieš mus, todėl visada turime įsitikinti, kad išimčių ir siųsti asmeninį pranešimą, kuriame nėra daug detalių, nes šią informaciją galima pamatyti kūrimo aplinkoje.
Kaip matėme, žinodami atakas, mes turime kitokią perspektyvą, kaip galime apsaugoti savo programą ir kaip tai padaryti, kad naudotojai būtų labiau apsaugoti.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave