Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 44609|Odpoveď: 1

[Zdroj] ValidateAntiForgeryToken a AutoValidateAntiforgeryToken anti-counterfeiting tagy sú podrobne vysvetlené

[Kopírovať odkaz]
Zverejnené 20. 2. 2021 19:57:29 | | | |
Aby sa zabránilo útokom CSRF, asp.net mvc poskytuje funkciu proti falšovaniu útokov ValidateAntiForgeryToken a v novej verzii jadrového frameworku asp.net Microsoft poskytuje funkciu AutoValidateAntiforgeryToken, konkrétne ValidateAntiForgeryToken a AutoValidateAntiforgeryToken Aký je rozdiel, tento článok podrobne vysvetlí.

mvc ajax s AntiForgeryTokenom na zabránenie útokom CSRF
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET CSRF útok Ajax žiada zapuzdrenie
https://www.itsvse.com/thread-8077-1-1.html
Koncept CSRF

CSRF Cross-Site Request Forgery, podobne ako XSS útoky, je mimoriadne škodlivý, môžete to pochopiť takto: útočník ukradne vašu identitu a pošle škodlivú požiadavku na vaše meno, ktorá je pre server úplne legitímna, ale vykoná akciu, ktorú útočník očakáva, ako je posielanie e-mailov a správ na vaše meno, krádež účtu, pridanie správcov systému alebo dokonca nákup tovaru, Virtuálne prevody meny a podobne. Web A je webová stránka s zraniteľnosťou CSRF, Web B je škodlivá webová stránka vytvorená útočníkom a používateľ C je legitímnym používateľom webu A.


ASP.NET MVC proti útokom CSRF

Na stránke zobrazenia použite @Html.AntiForgeryToken() na pridanie tagu a keď používateľ pristúpi na stránku, backend automaticky vygeneruje skrytý html kód s týmto tagom, nasledovne:


<vstupné meno="__RequestVerificationToken" typ="skryté" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
Pozadie ovládača musí byť nastavené [ValidateAntiForgeryToken] funkcia na zabránenie falšovania formulárov.

ValidateAntiForgeryToken a AutoValidateAntiforgeryToken sú odlišné

AutoValidateAntiforgeryTokenAuthorizationFilter dedí ValidateAntiforgeryTokenAuthorizationFilter, ale prepíše v ňom len metódu ShouldValidate.

Vlastnosť AutoValidateAntiforgeryToken, ktorá umožňuje overovanie tokenov proti falšovaniu pre všetky nebezpečné HTTP metódy.HTTP metódy okrem GET, HEAD, OPTIONS a TRACE všetky vyžadujú token proti falšovaniu。 Toto môže byť použité ako globálny filter na spustenie validácie tokenov proti falšovaniu v aplikácii v predvolenom nastavení.

Prihlásenie na hypertextový odkaz je viditeľné.

AutoValidateAntiforgeryTokenAttribute overuje volanie na AutoValidateAntiforgeryTokenAuthorizationFilter, ktoré dedí z ValidateAntiforgeryTokenAuthorizationFilter,Metóda ShouldValidate bola prepísaná, vrátenie true znamená, že je potrebné overiť, a vrátenie false nebude validované, ako je znázornené na obrázku nižšie:

Analyzujte zdrojový kód:



AutoValidateAntiforgeryTokenAttribute umožňuje globálne aplikovať overenie tokenov proti falšovaniu na všetky nezabezpečené metódy, ako sú POST, PUT, PATCH a DELETE. Takže nemusíte pridávať vlastnosť [ValidateAntiForgeryToken] ku každej akcii, ktorá ju vyžaduje.

Na jeho použitie pridajte nasledujúci kód do metódy Startup vo vašom ConfigureServices:


Ak potrebujete ignorovať anti-falšovateľskú autentifikáciu, môžete pridať [IgnoreAntiforgeryTokenpripísať to akcii.

Niekedy sa môže stať, že budete musieť označiť viacero požiadaviek na kontroléri, zatiaľ čo niektoré požiadavky nie je potrebné falšovať, napríklad rôzne operácie založené na GET. Existuje niekoľko nástrojov, ktoré môžete použiť, aby bol proces pohodlnejší a pohodlnejší. Prvou je vlastnosť AutoValidateAntiforgeryToken. Správa sa ako vlastnosť ValidateAntiForgeryToken. Avšak automaticky ignoruje akcie vyvolané metódami navrhnutými na získavanie dát: GET, HEAD, OPTIONS a TRACE. To vám umožní rýchlo a jednoducho pridať metódy proti falšovaniu do všetkých metód, ktoré môžu meniť údaje bez ovplyvnenia spôsobu získavania údajov.

Nasledujúci kód je príkladom vlastnosti AutoValidateAntiforgeryToken:


V tomto príklade budú bežné operácie Index (GET) fungovať bez ohľadu na zdroj, zatiaľ čo operácia Index s metódou POST a operácia RemoveUser ako metóda Delete vyžadujú, aby klient použil token proti falšovaniu.

Prispôsobte si relevantné informácie

Mnohí ľudia sa môžu zamýšľať, či sa názov generovanej skrytej domény dá nahradiť ich vlastným a či sa názov cookie dá zmeniť na ich vlastný.

Odpoveď je áno, poďme to stručne ukázať:

V metóde ConfigureServices v Startupe pridajte nasledujúce na úpravu predvoleného názvu.


Poznámka: Najväčší rozdiel medzi asp.net core a asp.net je,Core podporuje odovzdávanie validačných parametrov požiadavkou na hlavičku, aby nevytváral formy!

private const string AntiforgeryTokenFieldName = "__RequestVerificationToken";
private const string AntiforgeryTokenHeaderName = "RequestVerificationToken";


Môžete si pozrieť zdrojový kód:Prihlásenie na hypertextový odkaz je viditeľné.

Testovací kód:





Výsledok: Pokus o prístup k metóde test1 vráti chybu 400, prístup k metóde test2 vráti parameter str, ktorý sme prešli, a vidíte, že funkcia AutoValidateAntiforgeryToken nezachytí požiadavku GET.

(Koniec)




Predchádzajúci:Fiddler nahrádza odkazy, požiadavky presmerujú
Budúci:[otočka] SQL Server SQL Count
 Prenajímateľ| Zverejnené 8. 7. 2023 22:07:08 |
ASP.NET MVC žiada XSS validáciu nebezpečného obsahu (ValidateInput)
https://www.itsvse.com/thread-10624-1-1.html
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com