dedlfix: PHP Probleme nach erstmaliger Servereinrichtung

Beitrag lesen

echo $begrüßung;

Ich muss also ne Funktion finden, die "/" verbietet beim übergeben.

Es gibt mehrere Möglichkeiten. Eine wäre, die Namen der erlaubten Verzeichnisse gegen eine definierte Liste zu prüfen. Desweiteren könnte man prüfen, ob ein / im Dateinamen vorkommt, z.B. mit strpos(). Beachte dabei die Handbuchseite und den Unterschied zwischen 0 und false beim Rückgabewert der Funktion. Ebensogut könntest du mit einer ctype-Funktion auf erlaubte Zeichen prüfen (beispielsweise ctype_alnum() oder ctype_alpha()). Die ctype-Funktionen stehen aber nicht überall zur Verfügung. Du müsstest das vorher mit phpinfo() auf dem Zielsystem prüfen. Und auch die Verwendung Regulärer Ausdrücke wäre möglich, meist aber erst empfehlenswert, wenn es keine einfachere Lösung gibt.

Was du im Fall nicht erlaubter Werte machst, ist dir überlassen. Ablehnen mit einer entsprechenden Meldung oder Verwenden eines Default-Wertes wären zwei Vorschläge.

Was hat derjenige den im "schlimmsten Fall" davon, dass er die Verzeichnisse auslesen kann? Kann er auch die Zugangsdaten von MySQL-Datenbanken auslesen, wenn er die Datei findet?

Er kann auf alle Dateien zugreifen, auf die du mit deinen Rechten auch zugreifen kannst. Dazu können auch Zugangsdaten und andere Hinweise auf Schwachstellen zählen. Was man mit fremden übernommenen Rechnern alles anstellen kann siehst du beispielsweise täglich in deiner Mailbox.

Was in deinem konkreten Fall möglich ist, kommt auf den Rest der Scripte an. Wenn du das ermittelte Verzeichnis an ein Bildanzeigescript weitergibst, und du dort prüfst, dass die anzuzeigende Datei auch wirklich ein Bild ist, ist die Wahrscheinlichkeit des Datenausspähens schon wieder gesunken.
Zum Prüfen, ob es sich bei einer Dati um eine Grafikdatei handelt eignet sich getimagesize(). Die Funktion gibt ein Array mit Informationen zum Bild zurück oder false, falls es kein Bild sein sollte. Bei false könnte man die Anzeige/Ausgabe der Datei verweigern.

echo "$verabschiedung $name";