Turinys
Yra tam tikras išpuolio tipas, į kurį esame linkę ir kurį dažnai praleidžiame pro akis Kryžminis svetainių užklausos klastojimas arba CSRF, tai yra atsakinga už tai, kad mūsų programa apgauti gautų duomenis, gaunamus ne iš domeno, kuriame ji priglobta.Šio tipo ataka yra gana kenksminga, nes dėl to vartotojas, kuris buvo apgautas, naudojo savo autentifikavimą įvesti duomenis į mūsų duomenų bazę, įsivaizduokite, kad tokio tipo užpuolimo metu mūsų naujienų skiltyje pavyksta įvesti administracinį vartotoją ar galbūt melagingą naujieną .
Kaip paaiškinome, ši ataka apgaudinėja mūsų programą, kad ji gautų duomenis, kurie gaunami ne iš jos pačios, todėl ji pasinaudoja tuo, kaip protokolai veikia kaip HTTP ir įvairūs jo metodai, todėl užpuolikas gali sukurkite formą ir nurodykite mūsų valdytoją.
Norėdami iliustruoti šią ataką, pažvelkime į šį valdiklį, kuris yra pažeidžiamas tokio tipo atakos:
DIDELIS
Nepaisant to, kad tai gali būti fatališka, šios atakos galima išvengti, todėl turime atlikti tik kai kuriuos patvirtinimus, kurie garantuoja, kad gauti duomenys gaunami iš mūsų programos, tam galime naudoti kai kuriuos iš šių būdų:
Domeno nuorodaTai reiškia, kad reikia patikrinti, iš kurio domeno gaunama užklausa, ir mes garantuojame, kad jis yra tik iš to domeno, kuriame priglobta mūsų programa, vienintelė problema ar trūkumas yra tas, kad perkėlus domeno programą mums gali tekti atkurti patvirtinimą. nepadarėme dinamiško. Taip pat galima padaryti klaidingą nuorodą pasinaudojant programų pažeidžiamumais, pvz Adobe flash.
Sukurtas žetonasNaudodami šią parinktį mes darome tai, kad mūsų forma a žetonas kuris yra unikalus kiekvienam vartotojui, todėl mūsų programa, gaudama formas, patvirtina, kad žetonas yra tas pats, tokiu būdu jis leidžia priimti duomenis ar ne. Tai yra plačiausiai naudojamas variantas, nes jį labai lengva įgyvendinti ir jis turi mažai trūkumų arba jų visai nėra.
Sugeneruoto žetono atveju ASP.NET MVC yra keletas būdų, kurie gali mums padėti, pagrindinis yra @ Html.AntiForgeryToken () kuris sukuria slaptą raktą, kuriuo mūsų programa gali patvirtinti formas.
Taigi mes matome, kad yra daugiau sričių, nei manome ir kad mes turime jomis pasirūpinti savo programose, todėl turime apie tai informuoti ir žinoti, kaip įvyksta išpuoliai, kad galėtume rasti būdų, kaip jų išvengti.