Project

General

Profile

Fehler #507

Request mit vielen encodierten Zeichen im QueryString leitet auf die Startseite

Added by Schwarz, Tobias about 1 year ago. Updated about 1 year ago.

Status:
Erledigt
Priority:
Normal
Assignee:
-
Start date:
04/15/2018
Due date:
% Done:

100%

Estimated time:

Description

https://github.com/IlchCMS/Ilch-2.0/blame/626c814ae14ce341807fe896bdfdde1165be30b8/application/libraries/Ilch/Router.php#L133

Die ursprüngliche Länge des QueryStrings wird ENKODIERT gezählt. Dies wird jedoch später als Startwert für die DEKODIERTE Url genommen.
Bei vielen enkodierten Zeichen führt dies dazu, dass der Startwert von substr() out of range liegt und die Variable $query anschließend den Wert false hat.

Aus diesem Grund leitet der Router auf die Startseite.

Der einfachste Fix sollte sein, die Url erst nach dem Einsatz von substr() zu dekodieren.

if (!empty($_SERVER['QUERY_STRING'])) {
    $length = -1 * (strlen($_SERVER['QUERY_STRING']) + 1);
    $query = urldecode(substr($_SERVER['REQUEST_URI'], strlen(REWRITE_BASE), $length));
} else {
    $query = substr(urldecode($_SERVER['REQUEST_URI']), strlen(REWRITE_BASE));

History

#2

Updated by -, blackcoder about 1 year ago

  • Status changed from Neu to Erledigt
  • % Done changed from 0 to 100

Also available in: Atom PDF