See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 5685|Vastuse: 2

[Allikas] ASP.NET Core (20) Takista avatud ümbersuunamisrünnakuid

[Kopeeri link]
Postitatud 06.06.2023 21:55:38 | | | |
Nõuded: Hiljuti lugesin Microsofti ASP.NET Core dokumenti "Avatud ümbersuunamisrünnakute ennetamine ASP.NET Core'is", mis tähendab umbkauduArendajad peaksid jälgima kohaliku saidi trajektoori, kui nad hüppavad tagasikõne aadressile, et vältida mõnel inimesel pahatahtlikult võltsimast callback-aadressi õngitsusrünnakute jaoks。 Õpi koodi ja valmistu selle portimiseks ASP.NET MVC projekti.

Mäletan, et ühel suurel tootjal oli varem selline haavatavus ja mõned inimesed kasutasid seda, et QQ-st ja WeChatist liiklust välja juhtida, järgmiselt:



Haavatavust ära kasutades ei suutnud mõned vestlustööriistad takistada kasutajaid linkidel klõpsamast, et pääseda ligi pahatahtlikule veebilehe sisule, kuna nad usaldasid suuri ettevõtte domeene.

Mis on avatud ümbersuunamise rünnak?

Veebirakendused suunavad kasutajad sageli sisselogimislehtedele, kui nad kasutavad ressursse, mis vajavad autentimist. Ümbersuunamised sisaldavad tavaliselt returnUrl päringustringi parameetrit, et kasutajad saaksid pärast edukat sisselogimist naasta algselt soovitud URL-ile. Pärast kasutaja autentimist suunatakse ta algsele URL-ile.

Rünnaku näide

Pahatahtlik kasutaja võib välja töötada rünnaku, mille eesmärk on anda pahatahtlikule kasutajale ligipääs kasutaja mandaadiandmetele või tundlikule teabele. Rünnaku alustamiseks petab pahatahtlik kasutaja kasutajat klõpsama lingil teie saidi maandumislehele ja lisama sellele URL-ile returnUrl päringustringi väärtuse. selleks, etcontoso.comnäiteks rakendus onhttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutSisaldab maandumislehte. Rünnak järgneb järgmistele sammudele:

  • Kasutaja klõpsab pahatahtlikul lingilhttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(Teine URL on "contoso1.com", asemel "contoso.com”) 。
  • Kasutaja logib edukalt sisse.
  • Kasutaja suunatakse saidilehttp://contoso1.com/Account/LogOn(Pahatahtlik sait, mis näeb välja täpselt nagu päris leht).
  • Kasutaja logib uuesti sisse (andes pahatahtlikule saidile mandaadid) ja suunatakse tagasi päris saidile.
  • Kasutajad võivad arvata, et nende esimene sisselogimiskatse ebaõnnestus ja teine õnnestus.Tõenäoliselt ei tea kasutajad endiselt, et nende mandaate on kompromiteeritud




Lisaks maandumislehtedele pakuvad mõned saidid ümbersuunamislehti või lõpp-punkte. Oletame, et su rakendusel on leht, kus on avatud ümbersuunamine /Home/Redirect. Näiteks võib ründaja luua e-kirjas punkti[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/LoginLink. Tavalised kasutajad näevad, et URL algab sinu saidi nimega. Usaldusest klõpsavad nad lingil. Avatud suunamised suunavad kasutajad andmepüügisaitidele, mis näevad välja samasugused nagu sinu omad, ning kasutajad saavad sisse logida saitidele, mida nad arvavad olevat sinu omad.

Avatud ümbersuunamise rünnakute ennetamine

Veebirakenduste arendamisel käsitletakse kõiki kasutajate poolt esitatud andmeid ebausaldusväärsetena. Kui sinu rakendusel on võimalus kasutajaid suunata URL-i sisu põhjal, veendu, et sellised ümbersuunamised tehakse ainult lokaalselt sinu rakenduses (või suunatakse teadaolevatele URL-idele, mitte päringustringis olevatele URL-idele).

LocalRedirect

Kontrolleri abimeetodi kasutamine LocalRedirect baasklassis:

Kui määratakse mitte-lokaalne URL, lisab LocalRedirect erandi. Vastasel juhul käitub see samamoodi nagu ümbersuunamise meetod. Erandiinfo on järgmine:

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.
Lähtekood on järgmine:



Täitmisprotsess: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl ning lõpuks kutsutakse IsLocalUrl hindama (UrlHelperFactory rakendab vaikimisi IUrlHelperFactory liidest). )。

Lähtekoodi aadress:Hüperlingi sisselogimine on nähtav.

IsLocalUrl

IsLocalUrl enne ümbersuunamist testi URL-i selle meetodiga:

Kood on järgmine:

Testkood on järgmine:



Kui sul lubatakse hüpata teistele domeeninimede saitidele, saad rakendada IUrlHelperFactory liidese ja muuta IServiceCollection'i, et see asendaks vaikimisi rakendusklassi programmi käivitamisel.

Viide:Hüperlingi sisselogimine on nähtav.

(Lõpp)





Eelmine:Docker ehitab pilte Windowsi süsteemide peale
Järgmine:[Turn] (MSSQL) SQL Serveri andmebaasi int ja guid primaarvõtmete võrdluseks
 Üürileandja| Postitatud 06.06.2023 21:57:12 |
ASP.NET Core (üheksateist) kasutab BackgroundService'i taustaülesannete täitmiseks
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Kohanda lihtsat OutputCache väljundvahemälu
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integreerib MiniProfile rakenduse jõudlusanalüüsi
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Sõltub dünaamiliste registreerimisteenuste süstimisest
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) kasutab HTTP-päringute saatmiseks HttpClientit
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (neliteist) põhineb SkiaSharp pildi captcha peal
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII), et määrata, kas tegemist on Ajaxi taotlusega või mitte
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (kaksteist) front-end JS, CSS-i komplekt ja kompressioon
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) lõpp-punkti marsruut lisab vahetarkvara kõigi DI teenuste kuvamiseks
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Konfiguratsiooni prioriteetide üksikasjalik selgitus Core(10)-s.
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Põhjalik selgitus Core'i (9) Middleware'i vahendustarkvara kohta.
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Swaggeri kasutajaliidese vaikimisi parameetrite auk Core(8)-s.
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Raamistiku lähtekoodi põhjalik analüüs
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI saab käsitsi objektide süstimise meetodi
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (viis) põhineb CAP hajutatud tehingutel
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) filter ühtlustatud ModelState mudeli valideerimine
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dünaamiliselt loo instantse ActivatorUtilities abil
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Taaskäivita rakendus koodi järgi
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) kasutab Redis vahemällu salvestamist
https://www.itsvse.com/thread-9393-1-1.html
 Üürileandja| Postitatud 06.06.2023 22:01:21 |
IsLocalUrl meetod portib .NET raamistikku järgmiselt:

Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com