Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 44609|Odpověď: 1

[Zdroj] ValidateAntiCounterfeitryToken a AutoValidateAntiforgeryToken jsou podrobně vysvětleny štítky proti padělání

[Kopírovat odkaz]
Zveřejněno 20.02.2021 19:57:29 | | | |
Aby se zabránilo útokům CSRF, asp.net mvc poskytuje funkci proti padělání útoků ValidateAntiForgeryToken a v nové verzi jádrového frameworku asp.net Microsoft poskytuje funkci AutoValidateAntiforgeryToken, konkrétně ValidateAntiforgeryToken a AutoValidateAntiforgeryToken Jaký je rozdíl, tento článek podrobně vysvětlí.

mvc ajax s AntiForgeryTokenem pro prevenci útoků CSRF
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET CSRF útok Ajax žádá o zapouzdření
https://www.itsvse.com/thread-8077-1-1.html
Koncept CSRF

CSRF padělání požadavků napříč weby, stejně jako útoky XSS, je extrémně škodlivé, můžete to pochopit takto: útočník ukradne vaši identitu a pošle škodlivý požadavek na vaše jméno, který je pro server zcela legitimní, ale vykoná akci, kterou útočník očekává, jako je odesílání e-mailů a zpráv na vaše jméno, krádež vašeho účtu, přidání systémových administrátorů nebo dokonce nákup zboží, převody virtuálních měn atd. Web A je webová stránka s zranitelností CSRF, Web B je škodlivá webová stránka vytvořená útočníkem a uživatel C je legitimní uživatel webu A.


ASP.NET dopravní nehody proti útokům CSRF

Na stránce zobrazení použijte @Html.AntiForgeryToken() k přidání štítku a když uživatel stránku otevře, backend automaticky vygeneruje skrytý html kód s tímto štítkem, a to následovně:


<vstupní jméno="__RequestVerificationToken" typ="skryté" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
Pozadí ovladače musí být nastaveno [ValidateAntiForgeryToken] funkce pro zabránění padělání formulářů.

ValidateAntiForgeryToken a AutoValidateAntiforgeryToken jsou odlišné

AutoValidateAntiforgeryTokenAuthorizationFilter dědí ValidateAntiforgeryTokenAuthorizationFilter, ale pouze přepíše v něm metodu ShouldValidate.

AutoValidateAntiforgeryToken, která umožňuje validaci tokenů proti padělání pro všechny nezabezpečené HTTP metody.HTTP metody jiné než GET, HEAD, OPTIONS a TRACE všechny vyžadují token proti padělání。 To lze použít jako globální filtr, který ve výchozím nastavení spustí validaci tokenů proti padělání v aplikaci.

Přihlášení k hypertextovému odkazu je viditelné.

AutoValidateAntiforgeryTokenAttribute validuje volání na AutoValidateAntiforgeryTokenAuthorizationFilter, které dědí z ValidateAntiforgeryTokenAuthorizationFilter,Metoda ShouldValidate byla přepsána, vrácení true znamená, že je třeba ověřit, a vrácení false nebude validováno, jak je znázorněno na obrázku níže:

Analyzujte zdrojový kód:



AutoValidateAntiforgeryTokenAttribute umožňuje globální aplikaci validace tokenů proti padělání na všechny nezabezpečené metody, jako jsou POST, PUT, PATCH a DELETE. Takže nemusíte přidávat vlastnost [ValidateAntiForgeryToken] ke každé akci, která ji vyžaduje.

Pro použití přidejte následující kód do metody Startup ve vašem ConfigureServices:


Pokud potřebujete ignorovat ověřování proti padělání, můžete přidat [IgnoreAntiforgeryTokenpřipsat to akci.

Někdy se může stát, že budete muset označit více požadavků na řadiči, zatímco některé požadavky není třeba falšovat, například různé operace založené na GET. Existuje několik nástrojů, které můžete použít, aby byl celý proces pohodlnější a pohodlnější. První je vlastnost AutoValidateAntiforgeryToken. Chová se jako vlastnost ValidateAntiForgeryToken. Nicméně automaticky ignoruje akce vyvolané metodami navrženými pro získávání dat: GET, HEAD, OPTIONS a TRACE. To vám umožní rychle a snadno přidat metody proti padělání ke všem metodám, které mohou měnit data, aniž by ovlivnily způsob získávání dat.

Následující kód je příkladem vlastnosti AutoValidateAntiforgeryToken:


V tomto příkladu budou obě běžné operace Index (GET) fungovat bez ohledu na zdroj, zatímco operace Index metodou POST a operace RemoveUser jako metoda Delete vyžadují od klienta použití tokenu proti padělání.

Přizpůsobte relevantní informace

Mnoho lidí se může ptát, zda lze název vytvořené skryté domény nahradit jejich vlastním a zda lze název cookie změnit na jejich vlastní.

Odpověď zní ano, pojďme to stručně ukázat:

V metodě ConfigureServices ve Startupu přidejte následující pro úpravu výchozího názvu.


Poznámka: Největší rozdíl mezi asp.net core a asp.net je,Core podporuje předávání validačních parametrů požadavkem na hlavičku, ne k tvorbě forem!

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


Zdrojový kód si můžete prohlédnout:Přihlášení k hypertextovému odkazu je viditelné.

Testovací kód:





Výsledek: Při pokusu o přístup k metodě test1 se zobrazí chyba 400, přístup k metodě test2 vrátí parametr str, který jsme předali, a vidíte, že funkce AutoValidateAntiforgeryToken nezachytí požadavek GET.

(Konec)




Předchozí:Fiddler nahrazuje odkazy, žádosti přesměrovávají
Další:[otočka] SQL Server SQL Count
 Pronajímatel| Zveřejněno 08.07.2023 22:07:08 |
ASP.NET MVC požaduje XSS ověření nebezpečného obsahu (ValidateInput)
https://www.itsvse.com/thread-10624-1-1.html
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com