架构师_程序员_码农网

U Získání hesla
Registrace

QQ登录

Stačí jeden krok, abyste mohli začít

Vyhledávání
Zobrazení:25604|Odpovědi: 1
打印 上一主题 下一主题

[Informace]ValidateAntiForgeryToken a AutoValidateAntiforgeryToken

[Kopírovat odkaz]
V 跳转到指定楼层
majitel
发表于 2021-2-20 19:57:29|只看该作者回帖奖励|Zpětnéprocházení|Režim čtení
V rámci prevence útoků CSRF poskytuje asp.net mvc funkce ValidateAntiForgeryToken proti útokům CSRF, v nové verzi jádra frameworku asp.net poskytuje Microsoft funkce AutoValidateAntiforgeryToken, specifickou ValidateAntiForgeryToken a AutoValidateAntiforgeryToken jaký je mezi nimi rozdíl, tento článek provede podrobné vysvětlení.

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

Zapouzdření požadavku Ajax pro útok ASP.NET CSRF
h ttps:// www.itsvse.com/thread-8077-1-1.html
Koncepty CSRF

CSRF Cross-Site Request Forgery (podvržení požadavku na křížovou stránku), u útoků XSS hrozí obrovské nebezpečí, lze to chápat takto: útočník ukradl vaši identitu, aby vaším jménem odeslal škodlivý požadavek, na serveru je tento požadavek zcela legitimní, ale vyplněný útočník očekává operaci, například vaším jménem odeslat poštu, odeslat zprávy, ukrást váš účet, přidat správce systému, a dokonce nakupovat zboží, převádět virtuální měnu a tak dále. Následující postup: Web A je web se zranitelností CSRF, web B je škodlivý web vytvořený útočníkem a uživatel C je legitimní uživatel webu A. V tomto případě se může jednat o uživatele, který je na webu A. Na webu A se může vyskytnout zranitelnost CSRF.


ASP.NET MVC proti útokům CSRF

Ve zobrazení stránky použijte funkci @Html.AntiForgeryToken() pro přidání tokenu, když uživatel navštíví stránku, back-end automaticky vygeneruje skrytý html kód z tokenu, jak je uvedeno níže:


<input name="__RequestVerificationToken" type="hidden" value="" CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_ KUUDbK-LS4HD16pJusFRppj-dEGc" />
Backendový kontrolér musí nastavit funkci [ValidateAntiForgeryToken ], aby se zabránilo podvrženým odesláním formuláře.

Rozdíl mezi ValidateAntiForgeryToken a AutoValidateAntiforgeryToken

AutoValidateAntiforgeryTokenAuthorizationFilter dědí z ValidateAntiforgeryTokenAuthorizationFilter a přepisuje pouze metodu ShouldValidate.

AutoValidateAntiforgeryToken Atribut, který způsobí ověření platnosti antiforgery tokenu pro všechny nezabezpečené metody HTTP. Antiforgery tokeny jsou vyžadovány pro všechny metody HTTP kromě GET, HEAD, OPTIONS a TRACE. Lze jej použít jako globální filtr, který ve výchozím nastavení spustí ověřování antifalešných tokenů aplikace.

h ttps:// github.com/dotnet/aspnetcore/blob/c925f99cddac0df90ed0bc4a07ecda6b054a0b02/src/Mvc/Mvc.ViewFeatures/src/Filters/ AutoValidateAntiforgeryTokenAuthorisationFilter.cs

AutoValidateAntiforgeryTokenAttribute ověřuje platnost volání funkce AutoValidateAntiforgeryTokenAuthorizationFilter. AutoValidateAntiforgeryTokenAuthorizationFilter dědí z ValidateAntiforgeryTokenAuthorizationFilter a přepisuje metodu ShouldValidate. true znamená, že by měla být validována, návrat false nebude validována, jak je znázorněno na následujícím obrázku:

Analýza zdrojového kódu:



Atribut AutoValidateAntiforgeryTokenAttribute umožňuje globálně aplikovat validaci tokenu proti falšování na všechny nezabezpečené metody, jako jsou POST, PUT, PATCH a DELETE. takže nemusíte přidávat atribut [ValidateAntiForgeryToken] ke každé akci, která to potřebuje. ke každé akci, která jej potřebuje.

Chcete-li jej použít, přidejte následující kód do metody třídy Startup v nástroji ConfigureServices:


Pokud potřebujete ignorovat ověřování anti-forgery, můžete k akci přidat atribut [IgnoreAntiforgeryToken ].

Někdy se může stát, že budete potřebovat tokenizovat více požadavků na řadiči a zároveň budete potřebovat, aby některé požadavky nebyly falšovány, například různé operace založené na GET. Existuje několik nástrojů, které vám tento proces usnadní a zpříjemní. Prvním z nich je vlastnost AutoValidateAntiforgeryToken. Chová se podobně jako atribut ValidateAntiForgeryToken. Automaticky však ignoruje akce volané metodami určenými pro načítání dat: GET, HEAD, OPTIONS a TRACE. to umožňuje rychle a snadno přidat metody zabraňující falšování ke všem metodám, které mohou měnit data, aniž by to ovlivnilo metody, které data načítají.

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


V tomto příkladu budou fungovat obě běžné operace Index (GET) nezávisle na zdroji, zatímco operace Index s metodami POST a operace RemoveUser jako metody Delete budou vyžadovat, aby klient použil token proti falšování.

Přizpůsobení příslušných informací

Možná se najde spousta lidí, kteří si myslí, že název vygenerovaného skrytého pole lze změnit na jejich vlastní a název cookie lze změnit na jejich vlastní ~~.

Odpověď zní ano, zde je jednoduchá ukázka:

V metodě ConfigureServices funkce Startup přidejte následující obsah, abyste odpovídajícím způsobem změnili výchozí název.


Poznámka: Největší rozdíl mezi asp.net core a asp.net je v tom, že core podporuje předávání validačních parametrů prostřednictvím hlavičky požadavku, nikoliv formuláře!

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


Zdrojový kód si můžete prohlédnout: https: //github.com/dotnet/aspnetcore/blob/c925f99cddac0df90ed0bc4a07ecda6b054a0b02/src/Antiforgery/src/Internal/ DefaultAntiforgery.cs

Testovací kód:





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

(konec)




Předchozí: Fiddler nahrazuje odkazy, přesměrování požadavků
Další: [Report]SQL Server SQL Count při přidávání podmínek
Kód farmářské sítě, zveřejněný pouze v průběhu praxe, narazil na technické potíže, neuvádějte ostatní v omyl.
Nejsem si jistý, zda je to tak, ale myslím, že ano.

Asynchronní formulář žádosti asp.net mvc

Nejsem si jistý, jestli to zvládnu.
owner|Publikováno 2023-7-8 22:07:08|Pouze tento autor je zobrazen
Nebezpečné ověřování obsahu (ValidateInput) při požadavku ASP.NET MVC XSS
h ttps:// www.itsvse.com/thread-10624-1-1.html
Kód farmářské sítě, zveřejněn pouze v průběhu praxe, narazil na technické potíže, neuvádějte ostatní v omyl.
Před odesláním příspěvku se musíte přihlásit Přihlásit se | Registrovat se

T ato verze integrálních pravidel


UPOZORNĚNÍ: Veškerý software, programovací materiály nebo články publikované Code Farmerem slouží pouze pro studijní a výzkumné účely; výše uvedený obsah nesmí být používán ke komerčním nebo nelegálním účelům, jinak veškeré následky ponesou sami uživatelé. Tyto stránky informace ze sítě, spor o autorská práva nemá s těmito stránkami nic společného. Výše uvedený obsah musíte do 24 hodin od stažení kompletně odstranit z počítače. Pokud se vám program líbí, podpořte prosím originální software, zakupte si registraci a získejte lepší originální služby. Pokud dojde k porušení práv, kontaktujte nás prosím e-mailem, abychom to mohli řešit.

Mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Mapa stránek

GMT+8, 2024-9-19 00:45

Rychlá odpověďZpět na začátekZpět na seznam