@@ -81,9 +81,10 @@ public function createHttpRequest(): Request
8181 }
8282
8383 // path & query
84+ $ reChars = '#^[ ' . self ::CHARS . ']*+\z#u ' ;
8485 $ requestUrl = $ _SERVER ['REQUEST_URI ' ] ?? '/ ' ;
8586 $ requestUrl = preg_replace ('#^\w++://[^/]++# ' , '' , $ requestUrl );
86- if (!$ this ->binary && (!preg_match (self :: CHARS , rawurldecode ($ requestUrl )) || preg_last_error ())) {
87+ if (!$ this ->binary && (!preg_match ($ reChars , rawurldecode ($ requestUrl )) || preg_last_error ())) {
8788 // TODO: invalid request
8889 }
8990 $ requestUrl = Strings::replace ($ requestUrl , $ this ->urlFilters ['url ' ]);
@@ -109,24 +110,13 @@ public function createHttpRequest(): Request
109110 $ cookies = $ useFilter ? filter_input_array (INPUT_COOKIE , FILTER_UNSAFE_RAW ) : (empty ($ _COOKIE ) ? [] : $ _COOKIE );
110111
111112 // remove invalid characters
112- $ reChars = '#^[ ' . self ::CHARS . ']*+\z#u ' ;
113113 if (!$ this ->binary ) {
114- $ list = [&$ post , &$ cookies ];
115- foreach ($ list as $ key => &$ val ) {
116- foreach ($ val as $ k => $ v ) {
117- if (is_string ($ k ) && (!preg_match ($ reChars , $ k ) || preg_last_error ())) {
118- unset($ list [$ key ][$ k ]);
119-
120- } elseif (is_array ($ v )) {
121- $ list [$ key ][$ k ] = $ v ;
122- $ list [] = &$ list [$ key ][$ k ];
123-
124- } else {
125- $ list [$ key ][$ k ] = (string ) preg_replace ('#[^ ' . self ::CHARS . ']+#u ' , '' , $ v );
126- }
127- }
114+ if (!preg_match ($ reChars , rawurldecode (http_build_query ($ post ))) || preg_last_error ()) {
115+ $ post = [];
116+ }
117+ if (!preg_match ($ reChars , rawurldecode (http_build_query ($ cookies ))) || preg_last_error ()) {
118+ $ cookies = [];
128119 }
129- unset($ list , $ key , $ val , $ k , $ v );
130120 }
131121
132122
0 commit comments