Übergabevariablen prüfen

Übergaben an PHP-Scripte können von Angreifern sehr einfach manipuliert werden. Dazu muss nur die URL mit der Variable im Browser entsprechend manipuliert werden. Aus diesem Grund ist es sehr wichtig, dass alle Übergabevariablen vor der Benutzung im Script auf sinnvolle Werte geprüft werden.

Admidio lässt generell über alle übergebenen $_GET und $_POST Varialben die Funktionen strip_tags und addslashes laufen. Damit ist es zum einen nicht möglich HTML-Code in eine Variable einzubauen, sowie SQL-Injection einfach durchzuführen.

Zur Prüfung der Übergabevariablen steht die Funktion admFuncVariableIsValid zur Verfügung. Die Werte der Übergabevariablen sollten dann auch in eine neuen lokale Variable mit dem Präfix get_ zugewiesen werden. Besitzt die Übergabevariable den Namen $_GET['headline'], so sollte die lokale Variable $get_headline heißen. So sieht man im Code direkt, dass der Wert aus einer Übergabevariable kommt und behandelt den Inhalt ggf. vorsichtiger.

Funktion admFuncVariableIsValid

Datei: adm_program/system/function.php
Version: 2.3

Beschreibung

Die Funktion prüft aus einem Array eine Variable auf plausible Werte. Die Prüfung kann über weitere Parameter verfeinert werden.

value admFuncVariableIsValid($array, $variableName, $type, $defaultValue = null,
                             $requireValue = false, $validValues = null, $directOutput = false)

Parameter

Rückgabe

Zurückgegeben wird der Wert der Variable. Bei Texten wird hier noch zusätzlich die Funktion strip_tags durchgeführt, die HTML-Tags entfernt.

Beispiele

// Zahl, welche ggf. mit 0 initialisiert wird
$get_dat_id = admFuncVariableIsValid($_GET, 'dat_id', 'numeric', 0);
 
// Text, der ggf. mit DAT_DATES initialisiert wird
$get_headline = admFuncVariableIsValid($_GET, 'headline', 'string', $gL10n->get('DAT_DATES'));
 
// Text, der ggf. mit 'actual' initialisiert wird und nur die Werte 'actual' und 'old' enthalten darf
$get_mode = admFuncVariableIsValid($_GET, 'mode', 'string', 'actual', false, array('actual', 'old'));