File tree Expand file tree Collapse file tree 1 file changed +16
-5
lines changed Expand file tree Collapse file tree 1 file changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -83,8 +83,14 @@ export class Request {
8383 * `X-Forwarded-For`. When `false` an empty array is returned. */
8484 get ips ( ) : string [ ] {
8585 return this . #proxy
86- ? ( this . #serverRequest. headers . get ( "x-forwarded-for" ) ??
87- this . #getRemoteAddr( ) ) . split ( / \s * , \s * / )
86+ ? ( ( ) => {
87+ const raw = this . #serverRequest. headers . get ( "x-forwarded-for" ) ?? this . #getRemoteAddr( ) ;
88+ const bounded = raw . length > 4096 ? raw . slice ( 0 , 4096 ) : raw ;
89+ return bounded
90+ . split ( "," , 100 )
91+ . map ( ( part ) => part . trim ( ) )
92+ . filter ( ( part ) => part . length > 0 ) ;
93+ } ) ( )
8894 : [ ] ;
8995 }
9096
@@ -138,9 +144,14 @@ export class Request {
138144 let proto : string ;
139145 let host : string ;
140146 if ( this . #proxy) {
141- proto = serverRequest
142- . headers . get ( "x-forwarded-proto" ) ?. split ( / \s * , \s * / , 1 ) [ 0 ] ??
143- "http" ;
147+ const xForwardedProto = serverRequest . headers . get ( "x-forwarded-proto" ) ;
148+ let maybeProto = xForwardedProto
149+ ? xForwardedProto . split ( "," , 1 ) [ 0 ] . trim ( ) . toLowerCase ( )
150+ : undefined ;
151+ if ( maybeProto !== "http" && maybeProto !== "https" ) {
152+ maybeProto = undefined ;
153+ }
154+ proto = maybeProto ?? "http" ;
144155 host = serverRequest . headers . get ( "x-forwarded-host" ) ??
145156 this . #url?. hostname ??
146157 serverRequest . headers . get ( "host" ) ??
You can’t perform that action at this time.
0 commit comments