Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 5685|Odgovoriti: 2

[Vir] ASP.NET Jedro (20) Preprečevanje napadov z odprtimi preusmeritvami

[Kopiraj povezavo]
Objavljeno na 6. 06. 2023 21:55:38 | | | |
Zahteve: Nedavno sem prebral Microsoftov dokument ASP.NET Core "Preprečevanje napadov z odprtimi preusmeritvami v ASP.NET Core", kar približno pomeniRazvijalci naj bodo pozorni na pot lokalne strani, ko preskakujejo na naslov za povratni klic, da preprečijo, da bi nekateri zlonamerno ponarejali naslov za povratni klic za phishing napade。 Preučite kodo in se pripravite na prenos na projekt ASP.NET MVC.

Spomnim se, da je imel večji proizvajalec to ranljivost že prej, nekateri pa so jo uporabili za odvzem prometa iz QQ in WeChata, kot sledi:



Zaradi izkoriščanja ranljivosti nekatera klepetalna orodja niso mogla preprečiti uporabnikom, da bi klikali na povezave za dostop do zlonamernih spletnih vsebin zaradi zaupanja v domene velikih podjetij.

Kaj je odprti preusmerjajoči napad?

Spletne aplikacije uporabnike pogosto preusmerjajo na prijavne strani, ko dostopajo do virov, ki zahtevajo avtentikacijo. Preusmeritve običajno vključujejo parameter querystring returnUrl, da se lahko uporabniki po uspešni prijavi vrnejo na prvotno zahtevani URL. Ko uporabnik potrdi avtentikacijo, je preusmerjen na URL, ki ga je prvotno zahteval.

Primer napada

Zlonamerni uporabnik lahko razvije napad, zasnovan tako, da zlonamernemu uporabniku omogoči dostop do uporabniških poverilnic ali občutljivih informacij. Za začetek napada bi zlonamerni uporabnik prevaral uporabnika, da klikne povezavo na pristajalno stran vaše strani in doda vrednost querystring returnUrl na ta URL. da bicontoso.comNa primer, aplikacija je vhttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutVsebuje pristajalno stran. Napad sledi naslednjim korakom:

  • Uporabnik klikne na zlonamerno povezavo zahttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(Drugi URL je "contoso1.com", namesto "contoso.com”) 。
  • Uporabnik se uspešno prijavi.
  • Uporabnik je preusmerjen na stranhttp://contoso1.com/Account/LogOn(Zlonamerna stran, ki izgleda natanko kot prava).
  • Uporabnik se ponovno prijavi (vnese podatke za zlonamerno stran) in je preusmerjen nazaj na pravo stran.
  • Uporabniki lahko mislijo, da je njihov prvi poskus prijave spodletel, drugi pa je bil uspešen.Verjetno uporabniki še vedno ne vedo, da so bili njihovi podatki ogroženi




Poleg pristajalnih strani nekatere strani ponujajo tudi preusmeritvene strani ali končne točke. Recimo, da ima vaša aplikacija stran, ki vsebuje odprto preusmeritev, /Home/Redirect. Na primer, napadalec lahko ustvari točko v e-pošti[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/Loginpovezava. Redni uporabniki bodo opazili, da se URL začne z imenom vaše strani. Iz zaupanja kliknejo na povezavo. Odprte preusmeritve nato usmerjajo uporabnike na ribarske strani, ki so videti enako kot vaše, uporabniki pa se lahko prijavijo na strani, za katere mislijo, da so vaše.

Preprečevanje odprtih preusmerjajočih napadov

Pri razvoju spletnih aplikacij se vsi podatki, ki jih posredujejo uporabniki, obravnavajo kot nezanesljivi. Če ima vaša aplikacija možnost preusmerjanja uporabnikov glede na vsebino URL-jev, poskrbite, da se takšna preusmerjanja izvajajo samo lokalno v vaši aplikaciji (ali preusmerjajo na znane URL-je, ne na tiste, ki so morda navedeni v poizvedbenem nizu).

LocalRedirect

Uporaba metode Controller helper v osnovnem razredu LocalRedirect:

Če je določen nelokalni URL, LocalRedirect sproži izjemo. V nasprotnem primeru se obnaša enako kot metoda Preusmerjanja. Informacije o izjemi so naslednje:

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.
Izvorna koda je naslednja:



Postopek izvajanja: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, in na koncu bo IsLocalUrl poklican, da presodi (UrlHelperFactory privzeto implementira vmesnik IUrlHelperFactory. )。

Naslov izvorne kode:Prijava do hiperpovezave je vidna.

IsLocalUrl

IsLocalUrl pred preusmeritvijo testirajte URL s to metodo:

Koda je naslednja:

Testna koda je naslednja:



Če vam je dovoljeno skočiti na druge domenske strani, lahko implementirate vmesnik IUrlHelperFactory in spremenite IServiceCollection, da ob zagonu programa nadomestite privzeti razred implementacije.

Referenčni:Prijava do hiperpovezave je vidna.

(Konec)





Prejšnji:Docker gradi slike na vrhu Windows sistemov
Naslednji:[Obrat] (MSSQL) SQL Server database int and guid za primerjavo primarnih ključev
 Najemodajalec| Objavljeno na 6. 06. 2023 21:57:12 |
ASP.NET Core (devetnajst) uporablja BackgroundService za izvajanje ozadja
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Prilagodite preprost izhodni predpomnilnik OutputCache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integrira analizo zmogljivosti aplikacij MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Jedro (16) Odvisno od vbrizgavanja storitev dinamične registracije
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) uporablja HttpClient za pošiljanje HTTP zahtevkov
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (štirinajst) temelji na SkiaSharp image captcha
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII), da ugotovi, ali gre za Ajaxovo zahtevo ali ne
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dvanajst) sprednji JS, CSS združevanje in stiskanje
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) končna pot doda vmesno programsko opremo za prikaz vseh DI storitev
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Podrobna razlaga konfiguracijskih prioritet v Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Podrobna razlaga middleware vmesne programske opreme Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET privzetih parametrov uporabniškega vmesnika Swagger v Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Jedro (7) Poglobljena analiza izvorne kode ogrodja
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI ročno pridobi metodo vbrizgavanja objektov
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (pet) temelji na CAP distribuiranih transakcijah
https://www.itsvse.com/thread-9593-1-1.html

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

ASP.NET Jedro (iii) Dinamično ustvarjanje instanc z uporabo ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Jedro (2) Ponovni zagon aplikacije s kodo
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) uporablja Redis predpomnjenje
https://www.itsvse.com/thread-9393-1-1.html
 Najemodajalec| Objavljeno na 6. 06. 2023 22:01:21 |
Metoda IsLocalUrl je prenesena v .NET ogrodje na naslednji način:

Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com