Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 5685|Svar: 2

[Källa] ASP.NET Core (20) Förhindra öppna omdirigeringsattacker

[Kopiera länk]
Publicerad på 2023-06-06 21:55:38 | | | |
Krav: Jag läste nyligen Microsofts dokument ASP.NET Core "Preventing Open Redirect Attacks in ASP.NET Core", vilket ungefär betyderUtvecklare bör vara uppmärksamma på den lokala sidans bana när de hoppar till callback-adressen för att förhindra att vissa personer illvilligt förfalskar callback-adressen för phishing-attacker。 Studera koden och förbered dig på att porta den till ASP.NET MVC-projektet.

Jag minns att en stor tillverkare hade denna sårbarhet tidigare, och vissa använde den för att dra trafik från QQ och WeChat, enligt följande:



Genom att utnyttja sårbarheten kunde vissa chattverktyg inte förhindra att användare klickade på länkar för att få tillgång till skadligt webbplatsinnehåll på grund av deras förtroende för stora företagsdomäner.

Vad är en öppen omdirigeringsattack?

Webbapplikationer omdirigerar ofta användare till inloggningssidor när de får tillgång till resurser som kräver autentisering. Omdirigeringar inkluderar vanligtvis en returnUrl-querystringparameter så att användare kan återvända till den ursprungligen begärda URL:en efter en lyckad inloggning. Efter att användaren autentiserat sig omdirigeras de till den URL de ursprungligen begärde.

Exempel på en attack

En illvillig användare kan utveckla en attack som syftar till att ge en illvillig användare tillgång till användarens inloggningsuppgifter eller känslig information. För att starta en attack skulle en illvillig användare lura användaren att klicka på en länk till din webbplats landningssida och lägga till returnUrl-frågesträngsvärdet till den URL:en. för attcontoso.comtill exempel är appen ihttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutInnehåller en landningssida. Attacken följer följande steg:

  • Användaren klickar på en skadlig länk för atthttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(Den andra URL:en är "contoso1.com", istället för "contoso.com”) 。
  • Användaren loggar in framgångsrikt.
  • Användaren omdirigeras till sidanhttp://contoso1.com/Account/LogOn(En skadlig sida som ser exakt ut som den riktiga).
  • Användaren loggar in igen (lämnar inloggningsuppgifter till den skadliga sidan) och omdirigeras tillbaka till den riktiga sidan.
  • Användare kan tro att deras första inloggningsförsök misslyckades och att det andra försöket lyckades.Det är troligt att användare fortfarande inte vet att deras inloggningsuppgifter har komprometterats




Förutom landningssidor erbjuder vissa sajter omdirigeringssidor eller slutpunkter. Låt oss säga att din app har en sida som innehåller en öppen omdirigering, /Hem/Omdirigering. Till exempel kan en angripare skapa en punkt i ett mejl[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/Loginlänk. Vanliga användare ser att URL:en börjar med ditt webbplatsnamn. Av förtroende klickar de på länken. Öppna omdirigeringar skickar sedan användare till nätfiskesajter som ser likadana ut som din, och användare kan logga in på sidor de tror är dina.

Förhindra öppna omdirigeringsattacker

Vid utveckling av webbapplikationer behandlas all användargiven data som opålitlig. Om din app har möjlighet att omdirigera användare baserat på URL-innehåll, se till att sådana omdirigeringar endast görs lokalt i din app (eller omdirigerar till kända URL:er, inte till eventuella URL:er som kan finnas i frågesträngen).

Lokalomdirigering

Att använda Controller helper-metoden i LocalRedirect-basklassen:

Om en icke-lokal URL anges kastar LocalRedirect ett undantag. Annars beter den sig likadant som Redirect-metoden. Undantagsinformationen är följande:

InvalidOperationException: The supplied URL is not local. A URL with an absolute path is considered local if it does not have a host/authority part. URLs using virtual paths ('~/') are also local.
Källkoden är följande:



Exekveringsprocess: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, och i slutändan kommer IsLocalUrl att kallas för att bedöma (UrlHelperFactory implementerar IUrlHelperFactory-gränssnittet som standard). )。

Källkodsadress:Inloggningen med hyperlänken är synlig.

IsLocalUrl

IsLocalUrl testa URL:en innan du omdirigerar med denna metod:

Koden är följande:

Testkoden är följande:



Om du får hoppa till andra domännamnssajter kan du implementera IUrlHelperFactory-gränssnittet och ändra IServiceCollection för att ersätta standardimplementeringsklassen när programmet startar.

Hänvisning:Inloggningen med hyperlänken är synlig.

(Slut)





Föregående:Docker bygger bilder ovanpå Windows-system
Nästa:[Turn] (MSSQL) SQL Server-databasint och guide för jämförelse av primärnyckeln
 Hyresvärd| Publicerad på 2023-06-06 21:57:12 |
ASP.NET Core (nitton) använder BackgroundService för att köra bakgrundsuppgifter
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Anpassa en enkel OutputCache-utdatacache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integrerar MiniProfile-applikationsprestandaanalys
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Beroende av injektion av dynamiska registreringstjänster
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) använder HttpClient för att skicka HTTP-förfrågningar
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (fjorton) är baserad på SkiaSharp-bildcaptchan
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) för att avgöra om det är en Ajax-förfrågan eller inte
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (tolv) front-end JS, CSS-paketering och komprimering
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) endpoint-rutten lägger till middleware för att visa alla DI-tjänster
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detaljerad förklaring av konfigurationsprioriteringar i Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detaljerad förklaring av Middleware-middleware i Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET gropen med standardparametrarna i Swagger UI i Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Djupgående analys av ramverkets källkod
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI hämtar manuellt metoden för att injicera objekt
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (fem) baseras på CAP-distribuerade transaktioner
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-filter enhetlig ModelState-modellvalidering
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Skapa instanser dynamiskt med hjälp av ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Starta om applikationen via kod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) använder Redis-cachelagring
https://www.itsvse.com/thread-9393-1-1.html
 Hyresvärd| Publicerad på 2023-06-06 22:01:21 |
IsLocalUrl-metoden portas till .NET-ramverket enligt följande:

Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com