Hvad er CSRF?
CSRF (Cross-site request forgery), også kendt som one click attack/session riding, kinesisk forkortelse: CSRF/XSRF. CSRF (Cross Site Request Forgery) er en netværksangrebsmetode, der blev opført som en af de 20 største sikkerhedsrisici på internettet i 2007. Andre sikkerhedsrisici, såsom SQL-script-injektion og cross-site domain script-angreb, er blevet velkendte i de senere år, og mange hjemmesider har forsvaret sig imod dem. CSRF er dog stadig et fremmed begreb for de fleste. Selv den mest kendte Gmail havde en CSRF-sårbarhed i slutningen af 2007, som blev hacket og forårsagede store tab for Gmail-brugere.
Hvad kan CSRF gøre?
Du kan forstå CSRF-angreb som dette: en angriber har stjålet din identitet og sendt ondsindede anmodninger i dit navn. CSRF kan gøre ting som at sende e-mails, sende beskeder, stjæle din konto eller endda købe varer og overføre virtuel valuta på dine vegne...... De problemer, der opstår, omfatter: lækage af privatliv og sikkerhed på ejendommen.
ASP.NET MVC AntiForgeryToken anti-forfalskningsmærke
I ASP.NET MVC genereres formulartokens og cookie-tokens automatisk som standard, når @Html.AntiForgeryToken() bruges på visningssiden. Men hvis vi vil opnå manuel hentning i baggrunden, skal vi bruge System.Web.Helpers.AntiForgery-klassen, og venner, der er interesserede i at se kildekoden, vil opdage, at metoden for internt kald af @Html.AntiForgeryToken() faktisk er den samme som for AntiForgery-klassen.
Det bruges hovedsageligt til at opnå den tilsvarende formular og cookie-token gennem to statiske metoder: AntiForgery.GetHtml() eller AntiForgery.GetTokens(streng oldCookieToken, ud-streng newCookieToken, ud-streng formToken). Det skal dog bemærkes, at når GetHtml-metoden kaldes, vil den tilsvarende cookie-token automatisk blive genereret, og derefter vil et stykke HTML-kode med formulartoken-værdien skjult felt blive returneret direkte, og den returnerede værdi vil være i denne form:
<input name="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Navnenavnet på det skjulte felt er som regel fastlagt til "__RequestVerificationToken", og værdien er en krypteret sikkerhedstoken. Dette skjulte felt placeres normalt i formularen, der skal indsendes, og den endelige indsendelse verificeres mod cookie-tokenet.
Hvis du bruger GetTokens-metoden, kan du få den krypterede formular og cookie-token efter at have sendt de tilsvarende parametre ind, men her skal du selv gemme de tilsvarende værdier.
Dernæst vil vi introducere metoden til manuel opdatering af AntiForgeryToken, primært via AJAX.
Pakkekode:
Testkode:
Vi fandt, at når man sender en ajax-anmodning, inkluderes __RequestVerificationToken parametre automatisk, som vist i figuren nedenfor:
|