phpbar.de logo

Mailinglisten-Archive

Re: [php] Eingabe überprüfen
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [php] Eingabe überprüfen



Das Problem, dass mit ungeprueften Eingaben Hackerangriffe moeglich
sind,
bezieht sich AFAIK auf alle Strings, die mit system() oder popen() (usw.
?)
dem Betriebssystem (genauer: einer Shell) uebergeben werden. Das senden
von Mail sollte mit mail() eigentlich sicher sein. Ich will an dem 
Beispiel aber mal ankuepfen und sendmail selbst aufrufen. Das geht
im Prinzip etwa so:

if (isset($email)) system("sendmail " . $email);

Wenn sich eine email-Adresse in $email befindet ist das ja noch gut. Es
ist aber genauso möglich, an die email-adresse weiteres anzuhaengen,
zB.:

$email="noo_(at)_uni-jena.de ; rm -rf ."

Der Systemaufruf bekommt damit das Aussehen

system("sendmail noo_(at)_uni-jena.de ; rm -rf .")

Es werden damit _zwei_ Kommandos uebergeben, die die Shell dann
ausfuehrt. Der Webmaster kann dann nur hoffen, dass der httpd nicht zu
viele Rechte besitzt :-)

Es ist schwer, allgemein zu sagen, wie ein vorgesetztes Filter aussehen
muss. Ausser dem ';' gibt es ja auch noch die Möglichkeiten '&&', '||'
bei der bash, was bei den verschiedenen Shells sonst noch geht, weiss 
ich nicht. Meist duerfte es besser sein, nicht zu fragen, was nicht sein
darf, sondern umgekehrt nur das zulassen, was die jeweilige Eingabe 
erwartet. Bei der Email-Adresse waere einer der schon genannten
regulaeren
Ausdruecke sicher geeignet (Auch wenn mail() das wahrscheinlich auch
testet).

mit freundlichen Gruessen,
Wolfgang

-- 
Wolfgang Ortmann
Digital Image Processing Group
Uni Jena, Fak. f. Mathematik und Informatik, 07740 Jena
http://pandora.inf.uni-jena.de/

Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive