Moin!
Meine Überlegung war folgende:
Der User, der die Anwendung verwendet, hat die entsprechende(n) Datei(en) als lua Datei vorliegen. Für den User also kein extra Aufwand, um seine Datei uploaden zu können. Wenn ich nun andererseits nur Dateien mit der Endung .lua in mein Verzeichnis verschiebe, und dort den Zugriff auf lua Dateien per htaccess verbiete, bin ich auf der sicheren Seite was etwaigen Missbrauch per Zugriff/ Download anbelangt, und kann bei Bedarf aber immer noch per Script auf die Dateien zugreifen.
Das ist genau die Denkweise, die du vermeiden solltest. Du definierst dir hier trennscharfe Bedingungen, die gut funktionieren, wenn alles innerhalb normaler Parameter läuft. Aber dein gesamter Schutz bricht zusammen, sobald auch nur eine Komponente den kleinsten Fehler zeigt.
Angenommen, es gelingt mir durch einen Trick, eine Datei mit böser Dateiendung durch deine Uploadprüfung zu schmuggeln, dann steht die hinterher in diesem Verzeichnis und ist öffentlich abrufbar, weil dein Zugriffsschutz nur die Dateien abschirmt, die angeblich durch deine Uploadprüfung durchkommen.
Oder du vertippst dich blöderweise, und der Upload prüft auf ".lau"-Dateien, der Schutz wirkt aber auf ".lua" - oder umgekehrt.
Mit "Pessimismus" bei der Sicherheitsbetrachtung würdest du dich einfach auf gar keine Diskussion einlassen und das fragliche Verzeichnis einfach pauschal für sämtliche Zugriffe vom Web aus sperren - und könntest dann bei der Uploadprüfung beliebig viele Fehler machen, ohne dass man deshalb auf die Datei zugreifen könnte.
Die einfachste Methode, ein Verzeichnis vom Web aus unerreichbar zu machen, wäre halt, es außerhalb des DOCUMENT_ROOT-Verzeichnisses zu platzieren. Das Skript kann, weil es über das Dateisystem operiert, dort zugreifen - HTTP aber nicht.
Ja, sehe ich ein. Wobei ich dabei wieder vor der Frage stehe, wie ich was konfigurieren muss, damit mein PHP Script die benötigten Rechte hat.
Es gibt ja durchaus Webspaces, bei denen man es sich nicht einrichten kann, solch ein außerhalb gelegenes Verzeichnis zu benutzen. Aber wenn es möglich ist, sollte der Zugriff mit PHP keinerlei Unterschied aufweisen im Vergleich zu einem webverfügbaren Verzeichnis.
BTW: Da habe ich doch noch etwas Interessantes im Archiv gefunden: http://forum.de.selfhtml.org/archiv/2003/12/t67386/#m385578 ;-)
Wer schreibt denn sowas? :)
- Sven Rautenberg
"Love your nation - respect the others."