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

Re: [linux-support] PHP



Markus Wernig wrote:
> On Mon, 2002-09-16 at 20:07, Markus Jordi wrote:
> 
>>Hallo Martin
>>
>>OK, ich würde sagen, das Script müsste etwa wie folgt aussehen:
>>
>><?PHP
>>
>>   $strFile = "home.php4";
>>   if (isset($_GET["open"]))
>>   {
>>     $strFile = $_GET["open"].".php4";
> 
> 
> Vielleicht noch ein bisschen Input-Validierung?
> Wie waere es mit 
> GET /index.php4?open='/pfad/zu/script-mit-passwoertern'

Ja, da gebe ich Dir recht, dass mein Beispiel nicht das höchste der 
Sicherheitsgefühle ist (ups, da ging mir das Script von gestern abend 
doch zu schnell durch). Ich hab das Script jedoch rel. einfach 
entsprechend der Frage gehalten.
Wenn ich etwas in der Art entwickle, mache ich das sonst immer über ein 
Array, so dass ich die Dateinamen vorgebe:

<?PHP

   $arrData[0] = "home.php4";
   $arrData[1] = "error.php4";
   $arrData[2] = "myfile.php4";
   $arrData[3] = "myproduct.php4";

   $strFile = $arrData[0];
   if (isset($_GET["open"]))
   {
     $nData = $_GET["open"];

     if (is_int($nData) && ($nData >= 0) && ($nData < count($arrData)))
     {
       $strFile = $arrData[$nData];
     }
     else
     {
       $strFile = $arrData[1];
     }
  }
?>
....
    <a href="<?PHP echo $PHP_SELF."?open=0"; ?>">Link 1</a>
    <a href="<?PHP echo $PHP_SELF."?open=2"; ?>">Link 2</a>
    <a href="<?PHP echo $PHP_SELF."?open=3"; ?>">Link 3</a>
....
    <?PHP include($strFile);
....

So kann es nicht passieren, dass der Benutzer etwas vom 
Scriptprogrammierer ungewünschtes zu Gesicht bekommt. Generell muss man 
aufpassen, dass alle Benutzereingaben entweder wieder direkt als Text 
ausgegeben werden oder dass die Eingabe durch die Scriptlogik 
ausgewertet und in eine gesicherte und erlaubte Form umgesetzt wird.

Sorry und Gruss
Markus