File tree Expand file tree Collapse file tree 1 file changed +12
-4
lines changed
src/CodeBeam.UltimateAuth.Server/Infrastructure/Redirect Expand file tree Collapse file tree 1 file changed +12
-4
lines changed Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments