Ich verwende ASP.NET-Mitgliedschaft und Formular-Authentifizierung und vor der Umleitung auf die returnURL wollte ich es zu validieren. Für diejenigen, die mit dem Arbeitsablauf nicht vertraut sind: Wenn Sie eine Seite aufrufen, die eine Authentifizierung erfordert, werden Sie zu einer Anmeldeseite weitergeleitet. In der URL-Zeichenkette sehen Sie einen Parameter namens returnURL, z. B. http://example.com/login.aspx?ReturnUrl=%2fprotected%2fdefault.aspx
Unabhängig davon, ob Sie dies in einer Umleitung wie Response.Redirect(returnURL) oder indirekt über die Methode FormsAuthentication.RedirectFromLoginPage verwenden, wird die Umleitung ohne Validierung von returnURL durchgeführt. FormsAuthentication.RedirectFromLoginPage verfügt über eine Sicherheitsüberprüfung, die sicherstellt, dass die Domäne nicht verlassen wird, aber das hält niemanden davon ab, genügend zufällige Zeichen einzugeben, um einen Fehler zu verursachen.
Ich habe es mit System.IO.File.Exists(Server.MapPath(returnURL))
aber bei genügend unzulässigen Zeichen führt Server.MapPath zu einem Fehler.
Hinweis: URLEncoding funktioniert nicht, weil wir nicht einen Parameter, sondern die primäre URL bereinigen.
Irgendwelche anderen Vorschläge zur Validierung oder Bereinigung des returnURL-Werts?