Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 5685|Atsakyti: 2

[Šaltinis] ASP.NET Core (20) Užkirsti kelią atvirų peradresavimo atakų

[Kopijuoti nuorodą]
Paskelbta 2023-06-06 21:55:38 | | | |
Reikalavimai: Neseniai perskaičiau "Microsoft" ASP.NET Core dokumentą "Atviro peradresavimo atakų prevencija ASP.NET Core", o tai apytiksliai reiškiaKūrėjai turėtų atkreipti dėmesį į vietinės svetainės kelią, kai pereina prie atgalinio skambinimo adreso, kad kai kurie žmonės negalėtų piktybiškai suklastoti atgalinio skambinimo adreso sukčiavimo atakoms。 Išstudijuokite kodą ir pasiruoškite jį perkelti į ASP.NET MVC projektą.

Prisimenu, kad pagrindinis gamintojas anksčiau turėjo šį pažeidžiamumą, o kai kurie žmonės jį naudojo srautui iš QQ ir WeChat išleisti taip:



Išnaudodami pažeidžiamumą, kai kurie pokalbių įrankiai negalėjo užkirsti kelio vartotojams spustelėti nuorodų, kad pasiektų kenkėjišką svetainės turinį, nes jie pasitiki dideliais įmonės domenais.

Kas yra atviro peradresavimo ataka?

Žiniatinklio programos dažnai nukreipia vartotojus į prisijungimo puslapius, kai jie pasiekia išteklius, kuriems reikalingas autentifikavimas. Peradresavimai paprastai apima returnUrl querystring parametrą, kad vartotojai galėtų grįžti į iš pradžių prašomą URL po sėkmingo prisijungimo. Kai vartotojas autentifikuojasi, jis nukreipiamas į iš pradžių prašytą URL.

Atakos pavyzdys

Kenkėjiškas vartotojas gali sukurti ataką, skirtą suteikti kenkėjiškam vartotojui prieigą prie vartotojo kredencialų ar neskelbtinos informacijos. Norėdamas pradėti ataką, kenkėjiškas naudotojas apgautų naudotoją, kad jis spustelėtų nuorodą į jūsų svetainės nukreipimo puslapį ir prie to URL pridėtų returnUrl užklausos eilutės reikšmę. Siekiantcontoso.comPavyzdžiui, programa yrahttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutYra nukreipimo puslapis. Ataka atliekama šiais veiksmais:

  • Vartotojas spustelėja kenkėjišką nuorodą įhttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(Antrasis URL yra "contoso1.com", vietoj "contoso.com”) 。
  • Vartotojas sėkmingai prisijungia.
  • Vartotojas nukreipiamas į svetainęhttp://contoso1.com/Account/LogOn(Kenkėjiška svetainė, kuri atrodo lygiai taip pat, kaip tikroji).
  • Vartotojas vėl prisijungia (pateikdamas kredencialus kenkėjiškai svetainei) ir nukreipiamas atgal į tikrąją svetainę.
  • Vartotojai gali manyti, kad pirmasis bandymas prisijungti nepavyko, o antrasis bandymas pavyko.Tikėtina, kad vartotojai vis dar nežino, kad jų kredencialai buvo pažeisti




Be nukreipimo puslapių, kai kurios svetainės siūlo peradresavimo puslapius arba galinius taškus. Tarkime, kad programoje yra puslapis, kuriame yra atidarytas peradresavimas /Home/Redirect. Pavyzdžiui, užpuolikas gali sukurti tašką el. laiške[jūsųsvetainė]/Pradžia/Redirect?url=http://phishingsite.com/Home/Loginsaitas. Įprasti vartotojai matys, kad URL prasideda jūsų svetainės pavadinimu. Iš pasitikėjimo jie paspaudžia nuorodą. Atidarykite peradresavimus, tada nukreipkite vartotojus į sukčiavimo svetaines, kurios atrodo taip pat, kaip jūsų, ir vartotojai gali prisijungti prie svetainių, kurios, jų manymu, yra jūsų.

Užkirskite kelią atvirų peradresavimo atakų prevencijai

Kuriant žiniatinklio programas, visi vartotojo pateikti duomenys laikomi nepatikimais. Jei programa gali peradresuoti naudotojus pagal URL turinį, įsitikinkite, kad tokie peradresavimai atliekami tik vietoje programoje (arba nukreipiami į žinomus URL, o ne į URL, kurie gali būti pateikti užklausos eilutėje).

Vietinis peradresavimas

Valdiklio pagalbinio metodo naudojimas LocalRedirect bazinėje klasėje:

Jei nurodytas ne vietinis URL, "LocalRedirect" pateikia išimtį. Priešingu atveju jis veikia taip pat, kaip ir peradresavimo metodas. Informacija apie išimtis yra tokia:

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.
Šaltinio kodas yra toks:



Vykdymo procesas: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, o galų gale IsLocalUrl bus pakviestas spręsti (UrlHelperFactory pagal numatytuosius nustatymus įgyvendina IUrlHelperFactory sąsają. )。

Šaltinio kodo adresas:Hipersaito prisijungimas matomas.

IsLocalUrl

IsLocalUrl prieš peradresuodami patikrinkite URL naudodami šį metodą:

Kodas yra toks:

Bandymo kodas yra toks:



Jei jums leidžiama pereiti į kitas domenų vardų svetaines, galite įdiegti IUrlHelperFactory sąsają ir modifikuoti IServiceCollection, kad pakeistų numatytąją diegimo klasę, kai programa paleidžiama.

Nuoroda:Hipersaito prisijungimas matomas.

(Pabaiga)





Ankstesnis:"Docker" kuria vaizdus ant "Windows" sistemų
Kitą:[Turn] (MSSQL) SQL Server duomenų bazės int ir guid pirminio rakto palyginimui
 Savininkas| Paskelbta 2023-06-06 21:57:12 |
"ASP.NET Core" (devyniolika) naudoja "BackgroundService" foninėms užduotims vykdyti
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET branduolys (18) Tinkinkite paprastą "OutputCache" išvesties talpyklą
https://www.itsvse.com/thread-10583-1-1.html

"ASP.NET Core" (17) integruoja "MiniProfile" programų našumo analizę
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Priklauso nuo dinaminės registracijos paslaugų įvedimo
https://www.itsvse.com/thread-10560-1-1.html

"ASP.NET Core" (XV) naudoja "HttpClient" HTTP užklausoms siųsti
https://www.itsvse.com/thread-10311-1-1.html

"ASP.NET Core" (keturiolika) yra pagrįstas "SkiaSharp" vaizdo captcha
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII), kad nustatytų, ar tai yra "Ajax" prašymas, ar ne
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dvylika) priekinės dalies JS, CSS susiejimas ir glaudinimas
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) galinio taško maršrutas prideda tarpinę programinę įrangą, kad būtų rodomos visos DI paslaugos
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Išsamus konfigūracijos prioritetų paaiškinimas branduolyje [10].
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Išsamus "Core" tarpinės programinės įrangos paaiškinimas (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Swagger vartotojo sąsajos numatytųjų parametrų duobę Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Išsami sistemos šaltinio kodo analizė
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI rankiniu būdu gauna objektų įpurškimo būdą
https://www.itsvse.com/thread-9595-1-1.html

"ASP.NET Core" (penki) yra pagrįstas BŽŪP paskirstytais sandoriais
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) filtro vieningas ModelState modelio tikrinimas
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dinamiškai kurkite egzempliorius naudodami "ActivatorUtilities"
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Iš naujo paleiskite programą pagal kodą
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) naudoja Redis talpyklą
https://www.itsvse.com/thread-9393-1-1.html
 Savininkas| Paskelbta 2023-06-06 22:01:21 |
IsLocalUrl metodas perkeliamas į .NET sistemą taip:

Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com