[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