Skip to content

Commit e0387c3

Browse files
author
Wolfgang Wiedermann
committed
Bugfix für #8: Nicht geprüfter String in Dispatcher.setRemoteUser
1 parent b513cac commit e0387c3

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

lib/Dispatcher.php

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ function getUser() {
4141
# Ermittlung der Benutzer-ID des aktuell angemeldeten Benutzers
4242
# (Zur Nutzung im jeweiligen Controller)
4343
function getUserId() {
44-
return $this-> user_id;
44+
return $this->user_id;
4545
}
4646

4747
# Methode zum Encodieren von Arrays in *.csv-Strings
@@ -75,17 +75,21 @@ function csvEncode($data) {
7575
# Methode zum uebergeben des Benutzers an den Dispatcher
7676
# ermittelt den zugeordneten Mandanten und setzt dessen id in das Feld $this->mandant_id
7777
function setRemoteUser($user) {
78-
$db = getDbConnection();
79-
$this->user = $user;
80-
$rs = mysqli_query($db, "select mandant_id, user_id from fi_user where user_name = '$user'");
81-
if($rs && $obj = mysqli_fetch_object($rs)) {
82-
$this->mandant = $obj->mandant_id;
83-
$this->user_id = $obj->user_id;
78+
if($this->isValidUserName($user)) {
79+
$db = getDbConnection();
80+
$this->user = $user;
81+
$rs = mysqli_query($db, "select mandant_id, user_id from fi_user where user_name = '$user'");
82+
if($rs && $obj = mysqli_fetch_object($rs)) {
83+
$this->mandant = $obj->mandant_id;
84+
$this->user_id = $obj->user_id;
85+
} else {
86+
throw new Exception("Kein Mandant für den Benutzer $user konfiguriert");
87+
}
88+
mysqli_close($db);
89+
//logX("Remote use ".$this->user." registered");
8490
} else {
85-
throw new Exception("Kein Mandant für den Benutzer $user konfiguriert");
91+
throw new Exception("Der Benutzername enthält ungültige Zeichen");
8692
}
87-
mysqli_close($db);
88-
logX("Remote use ".$this->user." registered");
8993
}
9094

9195
# Ein Objekt der angefragten Controller-Klasse laden
@@ -116,6 +120,13 @@ function isValidControllerName() {
116120
return count($results) == 0;
117121
}
118122

123+
# Prüft, ob der Benutzername keine ungültigen Zeichen enthält
124+
function isValidUserName($username) {
125+
$pattern = "/[']/";
126+
preg_match($pattern, $username, $results);
127+
return count($results) == 0;
128+
}
129+
119130
# Die angefragte Action ermitteln
120131
function getActionName() {
121132
return $this->request['action'];

0 commit comments

Comments
 (0)