Hva er CSRF?
CSRF (Cross-site request forgery), også kjent som ett klikk angrep/session riding, kinesisk forkortelse: CSRF/XSRF. CSRF (Cross Site Request Forgery) er en nettverksangrepsmetode som ble listet som en av de 20 største sikkerhetsrisikoene på Internett i 2007. Andre sikkerhetsrisikoer, som SQL-skriptinjeksjon og angrep på tvers av domene-skript, har blitt godt kjent de siste årene, og mange nettsteder har forsvart seg mot dem. CSRF er imidlertid fortsatt et fremmed begrep for de fleste. Selv den mest kjente Gmail hadde en CSRF-sårbarhet sent i 2007, som ble hacket og forårsaket store tap for Gmail-brukere.
Hva kan CSRF gjøre?
Du kan forstå CSRF-angrep som dette: en angriper har stjålet identiteten din og sendt ondsinnede forespørsler i ditt navn. CSRF kan gjøre ting som å sende e-poster, sende meldinger, stjele kontoen din, eller til og med kjøpe varer og overføre virtuell valuta på dine vegne...... Problemene som oppstår inkluderer: lekkasje av personlig privatliv og sikkerhet på eiendommen.
ASP.NET MVC AntiForgeryToken anti-forfalskningsmerke
I ASP.NET MVC genereres skjematokens og informasjonskapsel-tokens automatisk som standard når @Html.AntiForgeryToken() brukes på visningssiden. Men hvis vi vil oppnå manuell henting i bakgrunnen, må vi bruke System.Web.Helpers.AntiForgery-klassen, og venner som er interessert i å se kildekoden vil oppdage at metoden for internt kall @Html.AntiForgeryToken() faktisk er den samme som for AntiForgery-klassen.
Den brukes hovedsakelig for å hente den tilsvarende formen og cookie-token gjennom to statiske metoder: AntiForgery.GetHtml() eller AntiForgery.GetTokens(streng oldCookieToken, ut-streng newCookieToken, ut-streng formToken). Det bør imidlertid bemerkes at når GetHtml-metoden er kalt, vil den tilsvarende cookie-tokenen automatisk bli generert, og deretter vil et HTML-kode med skjematoken-verdien skjult felt returneres direkte, og den returnerte verdien vil være i denne formen:
<input name="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Navnenavnet på det skjulte feltet er vanligvis fastsatt til "__RequestVerificationToken", og verdien er en kryptert sikkerhetstoken. Dette skjulte feltet plasseres vanligvis i skjemaet som skal sendes inn, og den endelige innsendingen verifiseres mot cookie-tokenet.
Hvis du bruker GetTokens-metoden, kan du hente det krypterte skjemaet og cookie-tokenet etter å ha sendt inn de tilsvarende parameterne, men her må du lagre de tilsvarende verdiene selv.
Deretter vil vi introdusere metoden for manuell oppdatering av AntiForgeryToken, hovedsakelig gjennom AJAX.
Pakkekode:
Testkode:
Vi fant at når man sender en ajax-forespørsel, inkluderes __RequestVerificationToken parametere automatisk, som vist i figuren under:
|