Skip to content

Commit 03195d4

Browse files
committed
Try Another Fix
1 parent f6cd471 commit 03195d4

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/CodeBeam.UltimateAuth.Server/Infrastructure/Redirect/ReturnUrlParser.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,23 @@ public static ReturnUrlInfo Parse(string? returnUrl)
77
if (string.IsNullOrWhiteSpace(returnUrl))
88
return ReturnUrlInfo.None();
99

10-
if (Uri.TryCreate(returnUrl, UriKind.Absolute, out var abs))
10+
returnUrl = returnUrl.Trim();
11+
12+
if (returnUrl.StartsWith("/", StringComparison.Ordinal) ||
13+
returnUrl.StartsWith("./", StringComparison.Ordinal) ||
14+
returnUrl.StartsWith("../", StringComparison.Ordinal))
15+
{
16+
return ReturnUrlInfo.Relative(returnUrl);
17+
}
18+
19+
if (Uri.TryCreate(returnUrl, UriKind.Absolute, out var abs) && (abs.Scheme == Uri.UriSchemeHttp || abs.Scheme == Uri.UriSchemeHttps))
20+
{
1121
return ReturnUrlInfo.Absolute(abs);
22+
}
1223

1324
if (returnUrl.StartsWith("//", StringComparison.Ordinal))
1425
throw new InvalidOperationException("Invalid returnUrl.");
1526

16-
if (returnUrl.StartsWith("/", StringComparison.Ordinal))
17-
return ReturnUrlInfo.Relative(returnUrl);
18-
1927
throw new InvalidOperationException("Invalid returnUrl.");
2028
}
2129
}

0 commit comments

Comments
 (0)