





















| ||||
| Wer hat noch nicht gestaunt bei einem Blick in seine Statistik? Da tauchen Versuche auf, einem Script falsche Variablen unterzujubeln, mit dem Sinn und Zweck den Server gehörig zu machen und zu mißbrauchen. Beispiel: /index.php?page=http://www.hackmich.com/user1/hack.txt und eigentlich sollte da z.B. stehen ?page=1 Ideal für Angriffe sind natürlich Formulare wie Kontaktformular, Gästebuch, Blog, Forum usw. Man kann natürlich für jede Variable die benötigt wird ein paar Zeilen Code schreiben, aber wenn einfacher geht... Weiter zur Seite 2 mit der Funktion Die Funktion: function checkvars($array,$vars) { foreach ($array as $variable => $wert) { global $$variable; if (!array_key_exists($variable,$vars)) { unset($GLOBALS[$variable]); unset($_GET[$variable]); unset($_POST[$variable]); continue; } if (!ereg($vars[$variable],$GLOBALS[$variable])) { $GLOBALS[$variable]=""; $_GET[$variable]=""; $_POST[$variable]=""; continue; } } } Der Aufruf (Beispiel): checkvars($_GET, Array( "email"=>"^([a-zA-Z0-9]((\.|\-)?[a-zA-Z0-9])*)@([a-zA-Z]((\.|\-)?[a-zA-Z0-9])*)\.([a-zA-Z]{2,8})$", "datum"=>"^(([012][1-9])|(3[01]))\.((0[1-9])|(1[0-2]))\.(((19[0-9])|(20[01]))[0-9])$", "text"=>"^[a-zA-Z0-9ÄÖÜäöüß|.|:|!|?|+|-|*|/|_| ]+$", "zahl5p"=>"^[1-9][0-9]{0,4}$", "zahl5"=>"^\-[1-9][0-9]{0,4}$|^[1-9][0-9]{0,4}$", "zahl5n"=>"^\-[1-9][0-9]{0,4}$", ) ); Erklärung: Am Amfang des Scriptes, z.B. ein Kontaktformular, wird die Funktion checkvars() aufgerufen, übergeben werden 2 Arrays: Array 1 : Das was überprüft werden soll, im Beispiel $_GET, also die Variablen die per URL übergeben werden. Array 2 : Beinhaltet eine Liste mit zulässigen Variablen und den dazugehörigen Ausdruck. Erläuterung des Beispiels: Die Get-Variablen sollen überprüft werden. Folgende Variablen dürfen übertragen werden: $email muß eine gültige Email-Adresse sein $datum muß im Format TT.MM.JJJJ sein $text kann Text, Zahlen und verschiedene Zeichen enthalten $zahl5p muß eine Zahl zwischen von 1 bis 99999 sein $zahl5 muß eine Zahl von -99999 bis -1 und 1 bis 99999 sein $zahl5n muß eine Zahl von -1 bis -99999 sein Die Funktion macht zwei Dinge: 1. Überprüfen ob die Variable erlaubt ist, wenn nicht, wird die mit 3 unset gelöscht. 2. Überprüfung der erlaubten Variablen auf korrekten Inhalt, wenn nicht, wird diese geleert. Empfehlung: Da der Aufruf mit $_GET, $_POST oder $GLOBALS durchgeführt werden, empfiehlt es sich alle drei auszuführen. (Weitere Tests ob z.B. nur ein ausführen mit $GLOBALS reicht, folgt in Kürze. Hinweis: Dieses Beispiel-Script unterstützt keine Arrays! Beispiel: index.php?a[3]=test | ||||




| ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
