Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 5685|Răspunde: 2

[Sursă] ASP.NET Nucleu (20) Prevenirea atacurilor de redirecționare deschisă

[Copiază linkul]
Postat pe 06.06.2023 21:55:38 | | | |
Cerințe: Am citit recent documentul Microsoft ASP.NET Core "Prevenirea atacurilor de redirecționare deschisă în ASP.NET Core", ceea ce înseamnă aproximativDezvoltatorii ar trebui să fie atenți la traiectoria site-ului local atunci când sar la adresa de callback pentru a preveni ca unii oameni să falsifice în mod rău intenționat adresa de callback pentru atacuri de tip phishing。 Studiază codul și pregătește-te să-l portezi pe proiectul ASP.NET MVC.

Îmi amintesc că un producător important a avut această vulnerabilitate înainte, iar unii oameni au folosit-o pentru a consuma trafic din QQ și WeChat, după cum urmează:



Exploatând vulnerabilitatea, unele instrumente de chat nu au putut împiedica utilizatorii să dea click pe linkuri pentru a accesa conținut malițios de pe site-uri din cauza încrederii lor în domeniile mari ale companiilor.

Ce este un atac de redirecționare deschisă?

Aplicațiile web redirecționează frecvent utilizatorii către paginile de autentificare atunci când accesează resurse care necesită autentificare. Redirecționările includ de obicei un parametru returnUrl querystring, astfel încât utilizatorii să poată reveni la URL-ul solicitat inițial după o autentificare reușită. După ce utilizatorul se autentifică, este redirecționat către URL-ul cerut inițial.

Exemplu de atac

Un utilizator rău intenționat poate dezvolta un atac conceput pentru a oferi acces la datele de acreditare sau informațiile sensibile ale acestuia. Pentru a începe un atac, un utilizator malițios ar păcăli utilizatorul să dea click pe un link către pagina de destinație a site-ului tău și ar adăuga valoarea string-ului de interogare returnUrl pe acel URL. pentru acontoso.comDe exemplu, aplicația este înhttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutConține o pagină de destinație. Atacul urmează următorii pași:

  • Utilizatorul dă click pe un link malițios cătrehttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(Al doilea URL este "contoso1.com", în loc de "contoso.com”) 。
  • Utilizatorul se autentifică cu succes.
  • Utilizatorul este redirecționat către sitehttp://contoso1.com/Account/LogOn(Un site malițios care arată exact ca cel real).
  • Utilizatorul se conectează din nou (oferind acreditări site-ului malițios) și este redirecționat înapoi către site-ul real.
  • Utilizatorii pot crede că prima lor încercare de autentificare a eșuat, iar a doua încercare a reușit.Este probabil ca utilizatorii încă să nu știe că datele lor de autentificare au fost compromise




Pe lângă paginile de destinație, unele site-uri oferă pagini de redirecționare sau endpoint-uri. Să presupunem că aplicația ta are o pagină care include o redirecționare deschisă, /Home/Redirect. De exemplu, un atacator ar putea crea un punct într-un e-mail[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/Loginlegătură. Utilizatorii obișnuiți vor vedea că URL-ul începe cu numele site-ului tău. Din încredere, dau click pe link. Deschide redirecționările apoi trimite utilizatorii către site-uri de phishing care arată la fel ca al tău, iar utilizatorii se pot conecta pe site-uri pe care le consideră ale tale.

Prevenirea atacurilor de redirecționare deschisă

La dezvoltarea aplicațiilor web, toate datele furnizate de utilizatori sunt tratate ca fiind nesigure. Dacă aplicația ta are capacitatea de a redirecționa utilizatorii pe baza conținutului URL-urilor, asigură-te că astfel de redirecționări se fac doar local în aplicație (sau redirecționează către URL-uri cunoscute, nu către URL-urile care pot fi oferite în stringul de interogare).

LocalRedirect

Folosind metoda Controller helper din clasa de bază LocalRedirect:

Dacă este specificat un URL non-local, LocalRedirect aruncă o excepție. În rest, se comportă la fel ca metoda Redirecționare. Informațiile despre excepții sunt următoarele:

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.
Codul sursă este următorul:



Proces de execuție: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, iar la final, IsLocalUrl va fi chemat să judece (UrlHelperFactory implementează implicit interfața IUrlHelperFactory. )。

Adresa codului sursă:Autentificarea cu hyperlink este vizibilă.

IsLocalUrl

IsLocalUrl înainte de redirecționare, testează URL-ul folosind această metodă:

Codul este următorul:

Codul testului este următorul:



Dacă ai voie să sari către alte site-uri de nume de domeniu, poți implementa interfața IUrlHelperFactory și modifica IServiceCollection pentru a înlocui clasa implicită de implementare la pornirea programului.

Referință:Autentificarea cu hyperlink este vizibilă.

(Sfârșit)





Precedent:Docker construiește imagini deasupra sistemelor Windows
Următor:[Întoarce] (MSSQL) Baza de date SQL Server int și guid pentru compararea cheilor principale
 Proprietarul| Postat pe 06.06.2023 21:57:12 |
ASP.NET Core (nouăsprezece) folosește BackgroundService pentru a rula sarcini în fundal
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Nucleu (18) Personalizează un cache simplu de ieșire OutputCache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integrează analiza performanței aplicațiilor MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Nucleu (16) Dependent de injectarea serviciilor dinamice de înregistrare
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) folosește HttpClient pentru a trimite cereri HTTP
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (paisprezece) se bazează pe captcha-ul imaginii SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) pentru a determina dacă este o cerere Ajax sau nu
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (douăsprezece) front-end JS, bundling și compresie CSS
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET ruta Core (XI) pentru endpoint adaugă middleware pentru a afișa toate serviciile DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Explicație detaliată a priorităților de configurare în Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Explicație detaliată a middleware-ului Middleware din Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET prăpastie a parametrilor impliciti ai interfeței Swagger în Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Analiză aprofundată a codului sursă al framework-ului
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI obține manual metoda de injectare a obiectelor
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinci) se bazează pe tranzacții distribuite CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Filtrul Core(4) validare unificată a modelului ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Crearea dinamică a instanțelor folosind ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Nucleu (2) Repornește aplicația prin cod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) folosește cache Redis
https://www.itsvse.com/thread-9393-1-1.html
 Proprietarul| Postat pe 06.06.2023 22:01:21 |
Metoda IsLocalUrl este portată în cadrul .NET astfel:

Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com