hi,
Du mußt JEDE EINZELNE Benutzereingabe validieren. Validieren ist nicht Escapen. Validieren bedeutet, die Benutzereingabe auf Typ, Größe, Wert, Konsistenz zu prüfen. Wenn Du das konsequent machst, und zwar so paranoid wie möglich, dann ist ein Angriff über manipulierte Benutzereingaben schon einmal extrem schwierig.
Das öffnet ja völlig neue Türen, ich habe mittlerweile auch einen Einstieg gefunden, jetzt fehlen mir die Ideen, was sollte Sinnvollerweise alles geprüft werden, bzw. auf was soll geprüft werden?
Was ich bis jetzt habe (ich bin mir Sicher, es geht auch schöner):
if($_GET) {
foreach($_GET as $keys => $vals) {
/* Wenn 'http' oder 'inc' in den $_GET-Variablen vorkommen, Fehler melden */
if ((preg_match_all("|http|", "$keys $vals", $mein_get)) OR (preg_match_all("|inc|", "$keys $vals", $mein_get)))
{
echo 'Hab ich dich!';
}
/* Wenn $_GET Key oder Value mehr als 30 Zeichen hat, Fehler melden */
if ((strlen($keys) >= 30) OR (strlen($vals) >= 30))
{
echo 'URI zu lang';
}
}
}
Im Einsatz könnte ich dann statt Fehlermeldungen auszugeben, das Script beenden.
Was wäre hier alles Sinnvoll und was sollte ich definitiv meiden?
mfg