Hallo,
ich danke euch für die Anmerkungen und Denkanstösse.
Bei meinem Uploadscript sind übrigens nur jpg Dateien erlaubt.
Überprüft wird die Dateierweiterung + der Mimetyp.
Mir ging es bei dem Skript zum automatischen Laden von Seiten
auch um eine Vereinfachung für mich. Ich wollte keine Whitelist
führen, die immer gepflegt werde muss. Die Sicherheit sollte durch
die Verzeichnisstruktur kommen.
Also in etwa so:
Ordner = includes
Ein Direktzugriff wird mittels htaccess Datei verhindert.
Darin übersichtlich alle Unterordner und Dateien die über die URL
eingebunden werden dürfen, wenn das Mitglied angemeldet ist.
Die Url um das Bilduploadformular anzeigen zu lassen wäre:
private.php?folder=images&file=file_upload
Hier überprüfe ich, dass in den übergebenen $_GET Parametern
nur Buchstaben sowie der Unterstrich enthalten sind.
(Durch die Ordnerstruktur mittels "." und "/" zu navigieren funktioniert also nicht).
Mit file_exist wird natürlich überprüft, ob die Datei existiert.
Denn als Parameter könnte man ja auch Entenhausen und Dagobert übergeben,
welche zwar inhaltlich in Ordnung wären, aber natürlich nicht existieren.
Für die verarbeitenden Scripte befindet sich in jedem Ordner noch
ein zweiter Ordner. Dieser kann ja nicht über die Url eingebunden werden.
Hierin liegt zum Beispiel die upload_check.php.
Also:
PHP-Code:
| includes
| images
| inc
+ upload_check.php
+ file_upload.php
#########################
| documents
| inc
+ new_entry_check.php
+ delete_entry_check.php
+ edit_entry_check.php
+ new_entry.php
+ delete_entry.php
+ edit_entry.php
+ .htaccess
Auf diese Weise, sofern ich keinen Denkfehler habe, kann ich nach Herzenslust
Projektordner und Dateien anlegen ohne eine Whitelist führen zu müssen.
Das Einzige, worauf ich wirklich unbedingt achten muss, ist dass ich verarbeitende
Dateien in einen separaten Ordner ablege, der über die URL nicht aufgerufen
werden kann.
Von der Benutzung und Pflege her ist das eigentlich denkbar einfach und auch
wunderbar übersichtlich.
Gruß
Auf der Mauer