====== Ü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 [[http://de2.php.net/manual/de/function.strip-tags.php|strip_tags]] und [[http://de2.php.net/manual/de/function.addslashes.php|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 === * **array** das Array (z.B. $_GET oder $_POST), welches die zu prüfende Variable enthält * **variableName** Name der Variable aus dem //array// welche geprüft werden soll * **type** Typ der Variable ''numeric'', ''string'', ''boolean'' und ''file''. Je nach Typ werden unterschiedliche Prüfungen auf den Wert der Variable gemacht und ggf. ein Hinweis ausgegeben, wenn die Variable nicht dem Typ entspricht * **defaultValue** Wurde kein Wert für die Variable dem Script übergeben, wird die Variable mit diesem Wert initialisiert * **requireValue** Ist dies auf //true// gesetzt, so wird ein Hinweis ausgegeben, wenn der Variablen kein Wert übergeben wurde * **validValues** ein Array mit gültigen Werten für die Variable. Ist der übergebene Wert nicht in diesem Array enthalten wird ein Hinweis ausgegeben * **directOutput** Ist dieser Wert auf //true// gesetzt, so wird eine Fehlermeldung nicht als HTML-Seite zurückgegeben, sondern der Fehlertext direkt unformatiert per **echo** ausgegeben === 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'));