Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 5685|Antwort: 2

[Quelle] ASP.NET Kern (20) Verhindern offener Umleitungsangriffe

[Link kopieren]
Veröffentlicht am 06.06.2023 21:55:38 | | | |
Anforderungen: Ich habe kürzlich Microsofts ASP.NET Core-Dokument "Preventing Open Redirect Attacks in ASP.NET Core" gelesen, was ungefähr bedeutet.Entwickler sollten beim Springen zur Rückrufadresse auf den Pfad der lokalen Seite achten, um zu verhindern, dass einige Personen die Rückrufadresse böswillig für Phishing-Angriffe fälschen。 Studieren Sie den Code und bereiten Sie sich darauf vor, ihn zum ASP.NET MVC-Projekt zu portieren.

Ich erinnere mich, dass ein großer Hersteller diese Schwachstelle schon einmal hatte, und einige Leute sie genutzt haben, um Traffic von QQ und WeChat abzuziehen, wie folgt:



Einige Chat-Tools nutzten die Schwachstelle aus, sodass Nutzer aufgrund ihres Vertrauens in große Unternehmensdomains auf Links klickten, um auf bösartige Webseiteninhalte zuzugreifen.

Was ist ein offener Umleitungsangriff?

Webanwendungen leiten Nutzer häufig auf Login-Seiten um, wenn sie auf Ressourcen zugreifen, die eine Authentifizierung erfordern. Weiterleitungen enthalten typischerweise einen returnUrl-Abfragestring-Parameter, sodass Nutzer nach erfolgreichem Login zur ursprünglich angeforderten URL zurückkehren können. Nachdem der Nutzer authentifiziert ist, wird er auf die ursprünglich gewünschte URL weitergeleitet.

Beispiel für einen Angriff

Ein böswilliger Nutzer kann einen Angriff entwickeln, der darauf abzielt, einem böswilligen Nutzer Zugang zu den Zugangsdaten oder sensiblen Informationen eines Nutzers zu gewähren. Um einen Angriff zu starten, würde ein böswilliger Nutzer den Nutzer dazu bringen, auf einen Link zur Landingpage Ihrer Seite zu klicken und den returnUrl-Abfragestring zu dieser URL hinzuzufügen. umcontoso.comZum Beispiel ist die App inhttp://contoso.com/Account/LogOn?returnUrl=/Home/AboutEnthält eine Landingpage. Der Angriff folgt folgenden Schritten:

  • Der Nutzer klickt auf einen bösartigen Link, umhttp://contoso.com/Account/LogOn?returnUrl=http://contoso1.com/Account/LogOn(Die zweite URL lautet "contoso1.com", statt "contoso.com”) 。
  • Der Nutzer meldet sich erfolgreich an.
  • Der Nutzer wird auf die Seite weitergeleitethttp://contoso1.com/Account/LogOn(Eine bösartige Seite, die genauso aussieht wie die echte).
  • Der Nutzer meldet sich erneut an (gibt der bösartigen Seite Zugangsdaten an) und wird zurück zur echten Seite weitergeleitet.
  • Nutzer denken vielleicht, dass ihr erster Login-Versuch gescheitert ist und der zweite erfolgreich war.Wahrscheinlich wissen Nutzer immer noch nicht, dass ihre Zugangsdaten kompromittiert wurden




Neben Landingpages bieten einige Seiten auch Weiterleitungsseiten oder Endpunkte an. Angenommen, deine App hat eine Seite, die eine offene Weiterleitung enthält, /Home/Redirect. Zum Beispiel könnte ein Angreifer einen Punkt in einer E-Mail erstellen[yoursite]/Home/Redirect?url=http://phishingsite.com/Home/Loginverbinden. Regelmäßige Nutzer sehen, dass die URL mit deinem Seitennamen beginnt. Aus Vertrauen klicken sie auf den Link. Offene Weiterleitungen leiten Nutzer dann zu Phishing-Seiten, die wie Ihre aussehen, und Nutzer können sich auf Seiten einloggen, von denen sie glauben, dass sie Ihre sind.

Offene Umleitungsangriffe verhindern

Bei der Entwicklung von Webanwendungen werden alle vom Nutzer bereitgestellten Daten als unzuverlässig behandelt. Wenn Ihre App die Möglichkeit hat, Nutzer basierend auf URL-Inhalten umzuleiten, stellen Sie sicher, dass solche Weiterleitungen nur lokal in Ihrer App erfolgen (oder auf bekannte URLs, nicht auf URLs, die im Abfragestring angegeben sind).

LocalRedirect

Verwendung der Controller-Hilfsmethode in der LocalRedirect-Basisklasse:

Wenn eine nicht-lokale URL angegeben ist, wirft LocalRedirect eine Ausnahme. Ansonsten verhält es sich genauso wie die Redirect-Methode. Die Ausnahmeinformationen sind wie folgt:

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.
Der Quellcode ist wie folgt:



Ausführungsprozess: LocalRedirect -> LocalRedirectResult -> IActionResultExecutor<LocalRedirectResult> -> LocalRedirectResultExecutor -> UrlHelper -> IsLocalUrl -> CheckIsLocalUrl, und am Ende wird IsLocalUrl zum Judge aufgerufen (UrlHelperFactory implementiert standardmäßig die IUrlHelperFactory-Schnittstelle). )。

Quellcode-Adresse:Der Hyperlink-Login ist sichtbar.

IsLocalUrl

IsLocalUrl testen Sie vor der Weiterleitung die URL mit folgender Methode:

Der Code lautet wie folgt:

Der Testcode ist wie folgt:



Wenn Sie zu anderen Domain-Name-Seiten springen dürfen, können Sie die IUrlHelperFactory-Oberfläche implementieren und IServiceCollection so modifizieren, dass die Standard-Implementierungsklasse beim Start des Programms ersetzt wird.

Referenz:Der Hyperlink-Login ist sichtbar.

(Ende)





Vorhergehend:Docker baut Images auf Windows-Systemen
Nächster:[Turn] (MSSQL) SQL Server Datenbank-int und Guid zum Vergleich von Primärschlüsseln
 Vermieter| Veröffentlicht am 06.06.2023 21:57:12 |
ASP.NET Core (neunzehn) verwendet BackgroundService, um Hintergrundaufgaben auszuführen
https://www.itsvse.com/thread-10591-1-1.html

ASP.NET Core (18) Anpassen Sie einen einfachen OutputCache-Output-Cache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integriert die Leistungsanalyse von MiniProfile-Anwendungen
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Abhängig von der Einspeisung dynamischer Registrierungsdienste
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) verwendet HttpClient, um HTTP-Anfragen zu senden
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (vierzehn) basiert auf dem SkiaSharp-Bild-Captcha
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII), um festzustellen, ob es sich um eine Ajax-Anfrage handelt oder nicht
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (zwölf) Frontend-JS, CSS-Bündelung und Kompression
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) Endpunkt-Route fügt Middleware hinzu, um alle DI-Dienste anzuzeigen
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detaillierte Erklärung der Konfigurationsprioritäten in Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detaillierte Erklärung der Middleware-Middleware von Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Grube der Standardparameter der Swagger-Benutzeroberfläche in Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Tiefgehende Analyse des Framework-Quellcodes
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI erhält manuell die Methode zum Einschleusen von Objekten
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (fünf) basiert auf CAP-verteilten Transaktionen
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-Filter einheitliche ModelState-Modellvalidierung
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Erstellen Sie Instanzen dynamisch mit ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Die Anwendung per Code neu starten
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) verwendet Redis-Caching
https://www.itsvse.com/thread-9393-1-1.html
 Vermieter| Veröffentlicht am 06.06.2023 22:01:21 |
Die IsLocalURL-Methode wird wie folgt auf das .NET-Framework portiert:

Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com