ASP.NET MVC - Atac CSRF

Cuprins
Există un tip de atac la care suntem predispuși și pe care de multe ori îl trecem cu vederea, acesta este Solicitare de falsificare a site-urilor încrucișate sau CSRF, acesta este responsabil pentru păcălirea aplicației noastre în primirea datelor care nu provin din domeniul în care este găzduită.
Acest tip de atac este destul de dăunător, deoarece determină un utilizator care a fost înșelat să își folosească autentificarea să introducă date în baza noastră de date, imaginați-vă că, cu un atac de acest tip, un utilizator administrativ sau poate știri false este reușit să intre în secțiunea noastră de știri .
După cum am explicat, acest atac păcălește aplicația noastră pentru a primi date care nu provin de la sine, pentru aceasta profită de modul în care protocoalele funcționează ca HTTP și diferitele sale metode, astfel un atacator poate creați un formular și indicați spre controlerul nostru.
Pentru a ilustra acest atac, să ne uităm la următorul controler care este vulnerabil la acest tip de atac:

Aici putem vedea cum obținem datele direct din formularul nostru și acest lucru nu este rău, singura problemă este că nu spunem aplicației noastre că trebuie să își valideze originea, cu aceasta un atacator poate genera un script ca următorul:

MARI

Aici este clar ce se întâmplă, la încărcarea acestei pagini, se trimite formularul care indică o anumită înregistrare din baza de date, acest formular indică un controler valid, deci dacă un utilizator autentificat este direcționat către această pagină, suntem probabil într-un un pic de legătură.
În ciuda cât de fatalist poate fi, acest atac este evitabil, pentru aceasta trebuie doar să facem câteva validări care garantează că datele primite provin din aplicația noastră, pentru aceasta putem folosi unele dintre aceste tehnici:
Referință domeniuAceasta constă în verificarea din ce domeniu provine solicitarea, cu aceasta garantăm că provine doar din domeniul în care este găzduită aplicația noastră, singura problemă sau dezavantaj este că, dacă migrăm aplicația noastră de domeniu, va trebui să reconstruim validarea în cazul în care nu am făcut dinamic. De asemenea, este posibil să faceți o referință falsă profitând de vulnerabilitățile aplicației, cum ar fi Adobe flash.
Jeton generatCu această opțiune ceea ce facem este că în cadrul formularului nostru a jeton care este unic pentru fiecare utilizator, astfel încât aplicația noastră la primirea formularelor confirmă faptul că jetonul este același, permițând astfel acceptarea sau nu a datelor. Aceasta este cea mai utilizată opțiune, deoarece este foarte ușor de implementat și are dezavantaje mici sau deloc.
În cazul jetonului generat ASP.NET MVC conține câteva metode care ne pot ajuta, principala este @ Html.AntiForgeryToken () care generează cheia secretă prin care aplicația noastră poate valida formularele.
Vedem atunci că există mai multe domenii decât credem și că trebuie să avem grijă în aplicațiile noastre, așa că trebuie să ne informăm și să fim conștienți de modul în care apar atacurile pentru a elabora modalități de a le evita.
wave wave wave wave wave