ASP.NET MVC - CSRF napad

Sadržaj
Postoji vrsta napada kojoj smo skloni i koju mnogo puta previdimo, to je Krivotvorina zahtjeva za više web lokacija ili CSRF, ovo je odgovorno za prevaru naše aplikacije u primanju podataka koji ne dolaze s domene na kojoj se nalazi.
Ova vrsta napada prilično je štetna jer uzrokuje da je korisnik koji je prevaren upotrijebi svoju autentifikaciju za unos podataka u našu bazu podataka, zamislite da se s napadom ove vrste administrativni korisnik ili možda lažna vijest uspije unijeti u naš odjeljak vijesti .
Kao što smo objasnili, ovaj napad zavarava našu aplikaciju da prima podatke koji ne dolaze sami od sebe, jer za to koristi način na koji protokoli rade poput HTTP -a i njegovih različitih metoda, stoga napadač može stvorite obrazac i pokažite na našeg upravljača.
Za ilustraciju ovog napada, pogledajmo sljedeći kontroler koji je osjetljiv na ovu vrstu napada:

Ovdje možemo vidjeti kako podatke dobivamo izravno iz našeg obrasca i to nije loše, jedini je problem što našoj aplikaciji ne govorimo da mora potvrditi svoje podrijetlo, s tim da napadač može generirati skriptu poput ove:

POVEĆAJTE

Ovdje je jasno što se događa, prilikom učitavanja ove stranice šalje se obrazac koji upućuje na određeni zapis u bazi podataka, ovaj obrazac pokazuje na valjanog kontrolera, pa ako je autentificirani korisnik usmjeren na ovu stranicu, vjerojatno smo u malo vezati.
Unatoč tome koliko je to fatalistički, ovaj se napad može izbjeći, jer za to moramo učiniti samo neke provjere koje jamče da primljeni podaci dolaze iz naše aplikacije, za to se možemo poslužiti nekim od ovih tehnika:
Referenca domeneTo se sastoji od provjere iz koje domene dolazi zahtjev, čime jamčimo da je samo s domene na kojoj se nalazi naša aplikacija, jedini problem ili nedostatak je to što ćemo, ako migriramo našu aplikaciju domene, možda morati obnoviti provjeru valjanosti nismo učinili dinamičnim. Također je moguće napraviti lažnu referencu iskorištavanjem ranjivosti aplikacije kao što su Adobe flash.
Generirani žetonS ovom opcijom radimo ono što unutar našeg obrasca a znak što je jedinstveno po korisniku, pa naša aplikacija prilikom primanja obrazaca potvrđuje da je token isti, na taj način dopušta prihvaćanje podataka ili ne. Ovo je najčešće korištena opcija jer se vrlo lako provodi i ima male ili nikakve nedostatke.
U slučaju generiranog tokena ASP.NET MVC sadrži neke metode koje nam mogu pomoći, a glavna je @ Html.AntiForgeryToken () koji generira tajni ključ pomoću kojeg naša aplikacija može potvrditi obrasce.
Tada vidimo da postoji više područja nego što mislimo i da se moramo pobrinuti u svojim aplikacijama, pa se moramo informirati i biti svjesni kako se napadi događaju kako bismo smislili načine kako ih izbjeći.
wave wave wave wave wave