exec('grep "$_REQUEST['blabla']" maillog');
//ganz schlechte Idee
//(hoffentlich ist $_REQUEST['blabla'] "rm -rf /*")
system('mkdir $_REQUEST['blabla']');
//genauso bescheuert
$shell_ergebnis=`ls -l | grep "$_REQUEST['blabla']"`;
//gefährlich
include($_REQUEST['blabla']);
//Selbstmord
require($_REQUEST['blabla']);
//Mutprobe
eval($_REQUEST['blabla']);
//Eieiei
$wert=preg_replace('/foobar/e','"bla'.$_REQUEST['blabla'].'blo"',$wer
t);
//Auch das ist problematisch
$wert=preg_replace('/blablabla(.*)blubblubblub"/e',"'bla\\1blub'",$_R
EQUEST['blabla']);
//gefährlich
Und: Ja, nicht nur $_POST und $_GET können vom Leser manipuliert
werden, sondern auch $_COOKIE UND ja, auch <input
type="hidden"-Felder kann man manipulieren. Und wenn register_globals
an ist, natürlich auch jede Variable, die nicht im Script gesetzt
wird:
<?php
if(blabla)
    $sms='yaps 0175123456 "Hallihallo"';
...
if($sms)
    system($sms);
?>
Böse, böse. Zumindest sollte man schreiben:
if(blabla)
    $sms='yaps 0175123456 "Hallihallo"';
else
    $sms=false;
Und natürlich sollte man auch bedenken, dass Werte aus $_SESSION
nicht immer vertrauenswürdig sind. Wenn in einer Datei steht:
$_SESSION['bla']=$_REQUEST['bla'];
dann sollte natürlich nicht in einer anderen Datei stehen:
system('yaps 0175123456 "'.$_SESSION['bla'].'"');
Auch ganz lustig:
<SCRIPTÂ language=JavaScript>
    var r1 = new RegExp("^[0-9]+$");
    if(r1.test(nummer)==false)
 alert('Sie dürfen hier nur Zahlen eingeben!!!');
</script>
in der Datei, an die das Formular gesendet wird dann:
system('yaps '.$nummer.' "SMS-Gruß von der Website ..."');
// "Kein Problem, ich hab ja über JavaScript getestet, dass nur
Zahlen in $nummer sind."
NEIN, braucht ja nur einer die Seite aufzurufen mit
http://....?nummer=0175123456+%22bin+schon+drin%22%3Brm+-rf+%2F
(0175123456 "bin schon drin";rm -rf /)
Und ein sinnvoll administrierter Server gehört auch dazu. Wenn man
nicht RICHTIG viel Zeit in die Administration stecken will, sollte
man sich keinen root-Server zulegen, sondern lieber auch gut
administrierte Hosting-Angebote zurückgreifen wie z.B. bei
hostingfabrik.de
Man KANN (und sollte) shared Hosting so konfigurieren, dass unsichere
Scripte eines Nutzers die Webseiten eines anderen nicht sofort
zerstören.
//ganz schlechte Idee
//(hoffentlich ist $_REQUEST['blabla'] "rm -rf /*")
system('mkdir $_REQUEST['blabla']');
//genauso bescheuert
$shell_ergebnis=`ls -l | grep "$_REQUEST['blabla']"`;
//gefährlich
include($_REQUEST['blabla']);
//Selbstmord
require($_REQUEST['blabla']);
//Mutprobe
eval($_REQUEST['blabla']);
//Eieiei
$wert=preg_replace('/foobar/e','"bla'.$_REQUEST['blabla'].'blo"',$wer
t);
//Auch das ist problematisch
$wert=preg_replace('/blablabla(.*)blubblubblub"/e',"'bla\\1blub'",$_R
EQUEST['blabla']);
//gefährlich
Und: Ja, nicht nur $_POST und $_GET können vom Leser manipuliert
werden, sondern auch $_COOKIE UND ja, auch <input
type="hidden"-Felder kann man manipulieren. Und wenn register_globals
an ist, natürlich auch jede Variable, die nicht im Script gesetzt
wird:
<?php
if(blabla)
    $sms='yaps 0175123456 "Hallihallo"';
...
if($sms)
    system($sms);
?>
Böse, böse. Zumindest sollte man schreiben:
if(blabla)
    $sms='yaps 0175123456 "Hallihallo"';
else
    $sms=false;
Und natürlich sollte man auch bedenken, dass Werte aus $_SESSION
nicht immer vertrauenswürdig sind. Wenn in einer Datei steht:
$_SESSION['bla']=$_REQUEST['bla'];
dann sollte natürlich nicht in einer anderen Datei stehen:
system('yaps 0175123456 "'.$_SESSION['bla'].'"');
Auch ganz lustig:
<SCRIPTÂ language=JavaScript>
    var r1 = new RegExp("^[0-9]+$");
    if(r1.test(nummer)==false)
 alert('Sie dürfen hier nur Zahlen eingeben!!!');
</script>
in der Datei, an die das Formular gesendet wird dann:
system('yaps '.$nummer.' "SMS-Gruß von der Website ..."');
// "Kein Problem, ich hab ja über JavaScript getestet, dass nur
Zahlen in $nummer sind."
NEIN, braucht ja nur einer die Seite aufzurufen mit
http://....?nummer=0175123456+%22bin+schon+drin%22%3Brm+-rf+%2F
(0175123456 "bin schon drin";rm -rf /)
Und ein sinnvoll administrierter Server gehört auch dazu. Wenn man
nicht RICHTIG viel Zeit in die Administration stecken will, sollte
man sich keinen root-Server zulegen, sondern lieber auch gut
administrierte Hosting-Angebote zurückgreifen wie z.B. bei
hostingfabrik.de
Man KANN (und sollte) shared Hosting so konfigurieren, dass unsichere
Scripte eines Nutzers die Webseiten eines anderen nicht sofort
zerstören.