Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 44609|Atsakyti: 1

[Šaltinis] Išsamiai paaiškintos "ValidateAntiForgeryToken" ir "AutoValidateAntiforgeryToken" apsaugos nuo klastojimo žymos

[Kopijuoti nuorodą]
Paskelbta 2021-02-20 19:57:29 | | | |
Siekiant užkirsti kelią CSRF atakoms, asp.net mvc teikia apsaugos nuo klastojimo atakų funkciją "ValidateAntiForgeryToken", o naujoje "asp.net" pagrindinės sistemos versijoje "Microsoft" teikia "AutoValidateAntiforgeryToken" funkciją, konkrečiai "ValidateAntiForgeryToken" ir "AutoValidateAntiforgeryToken" Koks skirtumas, šiame straipsnyje bus išsamiai paaiškinta.

mvc ajax su AntiForgeryToken, kad būtų išvengta CSRF atakų
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET CSRF ataka Ajax užklausos inkapsuliavimas
https://www.itsvse.com/thread-8077-1-1.html
CSRF koncepcija

CSRF kelių svetainių užklausų klastojimas, kaip ir XSS atakos, yra labai žalingas, galite tai suprasti taip: užpuolikas pavagia jūsų tapatybę ir jūsų vardu siunčia kenkėjišką užklausą, kuri yra visiškai teisėta serveriui, tačiau atlieka veiksmą, kurio tikisi užpuolikas, pvz., siųsti el. laiškus ir pranešimus jūsų vardu, pavogti paskyrą, pridėti sistemos administratorius ar net pirkti prekes, virtualios valiutos pervedimai ir kt. Web A yra svetainė, turinti CSRF pažeidžiamumą, Web B yra kenkėjiška svetainė, kurią sukūrė užpuolikas, o vartotojas C yra teisėtas Web A vartotojas.


ASP.NET MVC nuo CSRF atakų

Peržiūros puslapyje naudokite @Html.AntiForgeryToken(), kad pridėtumėte žymą, o vartotojui pasiekus puslapį, vidinė sistema automatiškai sugeneruos paslėptą html kodą su žyma, kaip nurodyta toliau:


<input name="__RequestVerificationToken" type="hidden" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
Fono valdiklis turi būti nustatytas [ValidateAntiForgeryToken] funkcija, kad būtų išvengta formų pateikimo klastojimo.

ValidateAntiForgeryToken ir AutoValidateAntiforgeryToken skiriasi

AutoValidateAntiforgeryTokenAuthorizationFilter paveldi ValidateAntiforgeryTokenAuthorizationFilter, bet tik perrašo jame esantį metodą ShouldValidate.

AutoValidateAntiforgeryToken ypatybė, kuri tikrina apsaugos nuo padirbinėjimo atpažinimo ženklus visais nesaugiais HTTP metodais.HTTP metodams, išskyrus GET, HEAD, OPTIONS ir TRACE, reikalingas apsaugos nuo padirbinėjimo raktas。 Tai gali būti taikoma kaip visuotinis filtras, kad pagal numatytuosius nustatymus būtų suaktyvintas programos apsaugos nuo klastojimo atpažinimo ženklo patvirtinimas.

Hipersaito prisijungimas matomas.

AutoValidateAntiforgeryTokenAttribute tikrina AutoValidateAntiforgeryTokenAuthorizationFilter iškvietimą, kuris paveldi iš ValidateAntiforgeryTokenAuthorizationFilter,Metodas ShouldValidate buvo perrašytas, grąžinant teisingą reiškia, kad jis turi būti patvirtintas, o grąžinus false nebus patvirtintas, kaip parodyta toliau pateiktame paveikslėlyje:

Išanalizuokite šaltinio kodą:



AutoValidateAntiforgeryTokenAttribute leidžia visuotinai taikyti apsaugos nuo padirbinėjimo žetonų patvirtinimą visiems nepatikimiems metodams, tokiems kaip POST, PUT, PATCH ir DELETE. Taigi jums nereikia pridėti [ValidateAntiForgeryToken] ypatybės prie kiekvieno veiksmo, kuriam to reikia.

Norėdami jį naudoti, pridėkite šį kodą prie "ConfigureServices" paleisties klasės metodo:


Jei norite nepaisyti apsaugos nuo klastojimo autentifikavimo, galite pridėti [IgnoreAntiforgeryTokenveiksmo atributas.

Kartais gali tekti pažymėti kelias užklausas valdiklyje, o kai kurių užklausų, kurių nereikia suklastoti, pvz., įvairių GET pagrįstų operacijų. Yra keletas įrankių, kuriuos galite naudoti, kad procesas būtų patogesnis ir patogesnis. Pirmasis yra AutoValidateAntiforgeryToken ypatybė. Jis elgiasi kaip ValidateAntiForgeryToken savybė. Tačiau jis automatiškai ignoruos veiksmus, kuriuos iškviečia duomenų gavimo metodai: GET, HEAD, OPTIONS ir TRACE. Tai leidžia greitai ir lengvai pridėti apsaugos nuo klastojimo metodus prie visų metodų, kurie gali pakeisti duomenis nedarant įtakos duomenų gavimo būdui.

Šis kodas yra ypatybės AutoValidateAntiforgeryToken pavyzdys:


Šiame pavyzdyje abi įprastos indekso operacijos (GET) veiks nepriklausomai nuo šaltinio, o indekso operacija su POST metodu ir operacija RemoveUser kaip naikinimo metodas reikalauja, kad klientas naudotų apsaugos nuo klastojimo atpažinimo ženklą.

Tinkinkite atitinkamą informaciją

Daugeliui žmonių gali kilti klausimas, ar sugeneruoto paslėpto domeno pavadinimą galima pakeisti savo, ir ar slapuko pavadinimą galima pakeisti į savo.

Atsakymas yra taip, trumpai parodykime:

Paleisties "ConfigureServices" metode pridėkite šiuos dalykus, kad atitinkamai pakeistumėte numatytąjį pavadinimą.


Pastaba: Didžiausias skirtumas tarp asp.net šerdies ir asp.net yraBranduolys palaiko tikrinimo parametrų perdavimą prašant antraštės, o ne formuoti formas!

privati const eilutė AntiforgeryTokenFieldName = "__RequestVerificationToken";
privati const eilutė AntiforgeryTokenHeaderName = "RequestVerificationToken";


Šaltinio kodą galite peržiūrėti:Hipersaito prisijungimas matomas.

Bandymo kodas:





Rezultatas: Bandant pasiekti test1 metodą pateikiama 400 klaida, prisijungus prie test2 metodo, grąžinamas str parametras, kurį praėjome, ir matote, kad AutoValidateAntiforgeryToken funkcija neperima GET užklausos.

(Pabaiga)




Ankstesnis:Smuikininkas pakeičia nuorodas, prašo peradresavimo
Kitą:[pasukti] SQL serverio SQL skaičius
 Savininkas| Paskelbta 2023-07-08 22:07:08 |
ASP.NET MVC prašo XSS pavojingo turinio patvirtinimo (ValidateInput)
https://www.itsvse.com/thread-10624-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com