Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 5685|Svar: 2

[Kilde] ASP.NET Core (20) Forhindre åbne omdirigeringsangreb

[Kopier link]
Opslået på 06/06/2023 21.55.38 | | | |
Krav: Jeg har for nylig læst Microsofts ASP.NET Core-dokument "Preventing Open Redirect Attacks in ASP.NET Core", som omtrent betyderUdviklere bør være opmærksomme på den lokale sits rute, når de hopper til callback-adressen, for at forhindre, at nogle personer ondsindet forfalsker callback-adressen til phishing-angreb。 Studér koden og forbered dig på at porte den til ASP.NET MVC-projektet.

Jeg husker, at en stor producent tidligere havde denne sårbarhed, og nogle brugte den til at dræne trafik fra QQ og WeChat, som følger:



Ved at udnytte sårbarheden kunne nogle chatværktøjer ikke forhindre brugere i at klikke på links for at få adgang til ondsindet indhold på hjemmesiden på grund af deres tillid til store virksomheders domæner.

Hvad er et åbent omdirigeringsangreb?

Webapplikationer omdirigerer ofte brugere til login-sider, når de får adgang til ressourcer, der kræver autentificering. Omdirigeringer inkluderer typisk en returnUrl-querystring-parameter, så brugere kan vende tilbage til den oprindeligt anmodede URL efter en vellykket login. Efter brugerens autentificering bliver de omdirigeret til den URL, de oprindeligt anmodede om.

Eksempel på et angreb

En ondsindet bruger kan udvikle et angreb, der er designet til at give en ondsindet bruger adgang til brugerens legitimationsoplysninger eller følsomme oplysninger. For at starte et angreb vil en ondsindet bruger narre brugeren til at klikke på et link til din sides landingsside og tilføje returnUrl-querystring-værdien til den URL. for atcontoso.comFor eksempel er appen ihttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutIndeholder en landingsside. Angrebet følger disse trin:

  • Brugeren klikker på et ondsindet link tilhttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(Den anden URL er "contoso1.com", i stedet for "contoso.com”) 。
  • Brugeren logger ind med succes.
  • Brugeren omdirigeres til sidenhttp://contoso1.com/Account/LogOn(Et ondsindet site, der ligner præcis det rigtige).
  • Brugeren logger ind igen (giver legitimationsoplysninger til det ondsindede site) og bliver omdirigeret tilbage til det rigtige site.
  • Brugere kan tro, at deres første loginforsøg mislykkedes, og det andet forsøg lykkedes.Det er sandsynligt, at brugerne stadig ikke ved, at deres legitimationsoplysninger er blevet kompromitteret




Ud over landingssider tilbyder nogle sider omdirigeringssider eller endepunkter. Lad os sige, at din app har en side, der inkluderer en åben omdirigering, /Hjem/Omdirigering. For eksempel kan en angriber oprette et punkt i en e-mail[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/Loginsammenkæde. Almindelige brugere vil se, at URL'en starter med dit webstedsnavn. Af tillid klikker de på linket. Åbne omdirigeringer sender derefter brugere til phishing-sider, der ligner dine, og brugerne kan logge ind på sider, de tror er dine.

Forhindre åbne omdirigeringsangreb

Når webapplikationer udvikles, behandles alle brugerindtastede data som utroværdige. Hvis din app har mulighed for at omdirigere brugere baseret på URL-indhold, skal du sikre, at sådanne omdirigeringer kun sker lokalt i din app (eller omdirigerer til kendte URL'er, ikke URL'er, der måtte være angivet i forespørgselsstrengen).

Lokalomdirigering

Brug af Controller-hjælpermetoden i LocalRedirect-basisklassen:

Hvis en ikke-lokal URL angives, kaster LocalRedirect en undtagelse. Ellers opfører den sig som Redirect-metoden. Undtagelsesoplysningerne er som følger:

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.
Kildekoden er som følger:



Eksekveringsproces: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, og til sidst vil IsLocalUrl blive kaldt til judge (UrlHelperFactory implementerer IUrlHelperFactory-grænsefladen som standard). )。

Kildekodeadresse:Hyperlink-login er synlig.

IsLocalUrl

IsLocalUrl test URL'en ved hjælp af denne metode:

Koden er som følger:

Testkoden er som følger:



Hvis du har lov til at hoppe til andre domænenavnesider, kan du implementere IUrlHelperFactory-grænsefladen og ændre IServiceCollection for at erstatte standardimplementeringsklassen, når programmet starter.

Henvisning:Hyperlink-login er synlig.

(Slut)





Tidligere:Docker bygger billeder oven på Windows-systemer
Næste:[Turn] (MSSQL) SQL Server-databaseint og guide til sammenligning af primærnøgler
 Udlejer| Opslået på 06/06/2023 21.57.12 |
ASP.NET Core (nitten) bruger BackgroundService til at køre baggrundsopgaver
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Tilpas en simpel OutputCache outputcache
https://www.itsvse.com/thread-10583-1-1.html

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

ASP.NET Core (16) Afhængig af indsprøjtning af dynamiske registreringstjenester
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) bruger HttpClient til at sende HTTP-forespørgsler
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (fjorten) er baseret på SkiaSharp-billedcaptchaen
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) for at afgøre, om det er en Ajax-anmodning eller ej
https://www.itsvse.com/thread-10284-1-1.html

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

ASP.NET Core (XI) endpoint-ruten tilføjer middleware til at vise alle DI-tjenester
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detaljeret forklaring af konfigurationsprioriteter i Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detaljeret forklaring af Middleware-middleware i Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET grube med standardparametrene i Swagger-brugerfladen i Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Dybdegående analyse af frameworkets kildekode
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI henter manuelt metoden til at injicere objekter
https://www.itsvse.com/thread-9595-1-1.html

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

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

ASP.NET Core (iii) Opret dynamisk instanser ved hjælp af ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Genstart applikationen ved at kode
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) bruger Redis-caching
https://www.itsvse.com/thread-9393-1-1.html
 Udlejer| Opslået på 06/06/2023 22.01.21 |
IsLocalURL-metoden porteres til .NET-frameworket som følger:

Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com