Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 5685|Válasz: 2

[Forrás] ASP.NET Core (20) Nyílt átirányítási támadások megelőzése

[Linket másol]
Közzétéve 2023. 06. 06. 21:55:38 | | | |
Követelmények: Nemrég olvastam a Microsoft ASP.NET Core dokumentumát, "Preventing Open Redirect Attacks in ASP.NET Core", ami nagyjából azt jelenti, hogyA fejlesztőknek figyelniük kell a helyi oldal útvonalára, amikor visszahívó címre ugranak, hogy megakadályozzák egyesek rosszindulatú hamisítást a callback címet adathalász támadásokhoz。 Tanulmányozd a kódot, és készülj elő annak átportolására a ASP.NET MVC projekthez.

Emlékszem, hogy egy nagy gyártónak volt ilyen sebezhetősége korábban, és néhányan ezt használták a QQ és a WeChat forgalma elvonására, a következők szerint:



A sebezhetőség kihasználásakor néhány csevegőeszköz nem tudta megakadályozni, hogy a felhasználók rákattintsanak a rosszindulatú weboldal tartalmaihoz, mivel nagy vállalati domainekben bíztak.

Mi az a nyílt átirányítási támadás?

Webalkalmazások gyakran irányítják a felhasználókat a bejelentkezési oldalakra, amikor olyan forrásokhoz férnek hozzá, amelyek hitelesítést igényelnek. Az átirányítások általában tartalmaznak egy returnUrl querystring paramétert, hogy a felhasználók sikeres bejelentkezés után visszatérhessenek az eredetileg kért URL-hez. Miután a felhasználó hitelesítést kap, átirányítják az eredetileg kért URL-re.

Támadás példája

Egy rosszindulatú felhasználó olyan támadást fejleszthet, amely lehetővé teszi, hogy a rosszindulatú felhasználó hozzáférjen a felhasználó hitelesítő adataihoz vagy érzékeny adataihoz. Támadás indításához egy rosszindulatú felhasználó becsapja a felhasználót, hogy kattintson egy linkre az oldalad kezdőlapjára, és hozzáadja a returnUrl lekérdezéslánc értéket az adott URL-re. hogycontoso.compéldául az alkalmazás ahttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutTartalmaz egy landoldalt. A támadás az alábbi lépéseket követi:

  • A felhasználó egy rosszindulatú linkre kattinthttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(A második URL "contoso1.com", helyette"contoso.com”) 。
  • A felhasználó sikeresen bejelentkezik.
  • A felhasználót átirányítják az oldalrahttp://contoso1.com/Account/LogOn(Egy rosszindulatú oldal, ami pontosan úgy néz ki, mint a valódi).
  • A felhasználó ismét bejelentkezik (megadva a rosszindulatú oldal adatait), és visszairányítják a valódi oldalra.
  • A felhasználók azt gondolhatják, hogy az első bejelentkezési kísérletük sikertelen, a második pedig sikerült.Valószínű, hogy a felhasználók még mindig nem tudják, hogy a hitelesítő adataikat kompromittálták




A landing oldalakon kívül néhány oldal kínál átirányítási oldalakat vagy végpontokat is. Tegyük fel, hogy az alkalmazásodnak van egy oldala, amely nyílt átirányítást tartalmaz, /Home/Redirect. Például egy támadó létrehozhat egy pontot egy e-mailben[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/Loginláncszem. A hétköznapi felhasználók látják, hogy az URL az oldalneveddel kezdődik. Bizalomból kattintanak a linkre. A nyílt átirányítások aztán a felhasználókat olyan adathalász oldalakra küldik, amelyek hasonlítanak a tiédhez, és bejelentkezhetnek olyan oldalakra, amelyekről úgy gondolják, hogy a tiéd.

Nyílt átirányítási támadások megelőzése

Webalkalmazások fejlesztésekor minden felhasználó által biztosított adatot megbízhatatlannak kezelnek. Ha az alkalmazásod képes átirányítani a felhasználókat URL-tartalom alapján, győződjön meg róla, hogy ezek az átirányítás csak helyben legyen az alkalmazásban (vagy ismert URL-ekre irányítani, nem olyan URL-ekre, amelyek a lekérdezéssorozatban elérhetők).

LocalRedirect

A Controller-segéd metódus használatával a LocalRedirect alaposztályban:

Ha nem helyi URL-t jelölnek meg, a LocalRedirect kivételt ad ki. Egyébként ugyanúgy viselkedik, mint a Redirect módszer. A kivétel adatai a következők:

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.
A forráskód a következő:



Végrehajtási folyamat: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, és végül az IsLocalUrl-t hívják ítélni (az UrlHelperFactory alapértelmezetten az IUrlHelperFactory interfészt valósítja meg). )。

Forráskód cím:A hiperlink bejelentkezés látható.

IsLocalUrl

IsLocalUrl jelzéssel az átirányítás előtt teszteld az URL-t a következő módszerrel:

A kódex a következő:

A tesztkód a következő:



Ha engedélyezett más domain nevű oldalakra ugrani, akkor megvalósíthatod az IUrlHelperFactory interfészt, és módosíthatod az IServiceCollection-t, hogy a program elindulásakor lecserélje az alapértelmezett implementációs osztályt.

Utalás:A hiperlink bejelentkezés látható.

(Vége)





Előző:A Docker képeket épít a Windows rendszerekre
Következő:[Turn] (MSSQL) SQL Server adatbázis int és guid elsődleges kulcs összehasonlításához
 Háziúr| Közzétéve 2023. 06. 06. 21:57:12 |
ASP.NET Core (tizenkilenc) a BackgroundService-t használja háttérfeladatok futtatására
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Testreszabni egy egyszerű OutputCache kimeneti gyorsítótárt
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integrálja a MiniProfile alkalmazás teljesítményelemzését
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Dinamikus regisztrációs szolgáltatások beépítésétől függően
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) a HttpClient-t használja HTTP kérések küldésére
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (tizennégy) a SkiaSharp kép captcha-ján alapul
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) hogy megállapítsam, Ajax kérés-e vagy sem
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (tizenkettő) front-end JS, CSS csomagolás és tömörítés
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) végállomás közlekedőt ad hozzá az összes DI szolgáltatás megjelenítéséhez
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Részletes magyarázata a konfigurációs prioritásokról a Core(10)-ben.
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Részletes magyarázata a Core (9) közmű middleware-jéről.
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET a Swagger UI alapértelmezett paramétereinek gödöre a Core(8)-ban.
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) A keretrendszer forráskódjának mélyreható elemzése
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI manuálisan megszerzi az objektumok befecskendezésének módszerét
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (öt) CAP elosztott tranzakciókon alapul
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) szűrő egységes ModelState modellvalidáció
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dinamikusan hozz létre példányokat az ActivatorUtilities használatával
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Újraindítsa az alkalmazást kód szerint
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) Redis gyorsítótárat használ
https://www.itsvse.com/thread-9393-1-1.html
 Háziúr| Közzétéve 2023. 06. 06. 22:01:21 |
Az IsLocalUrl metódus a .NET keretrendszerbe az alábbiak szerint portolható:

Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com