• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP-Dateien mit <Files> matchen

PHP Anfänger

Neues Mitglied
Hallo zusammen,

ich versuche in einer .htaccess-Datei das Aufrufen von PHP-Dateien zu verbieten.
Für eine einzelne Datei mit bekanntem Namen klappt es, doch mit Platzhaltern, wie in den vielen Beispielen im Internet, funktioniert es einfach nicht!

Es geht um einen Onlinespeicher, der über das Internet erreichbar sein soll, aber nicht das Ausführen von Code zulassen soll.

Habt Ihr eine Idee, wo das Problem liegen könnte?
Könnte Ihr mir einen Code, der bei euch funktioniert, für die .htaccess-Datei schicken?
 
Ich habe z.B. den Code:

IndexIgnore *.php*
<Files *.php>
order allow,deny
deny from all
</Files>

Jetzt besteht aber das Problem, dass sogar der Index des Ordners "Forbidden" ist.
 
Lass IndexIgnore weg und definiere einen richtigen DirectoryIndex für eine .html-Datei.

Code:
DirectoryIndex index.html
Dann sollte der Server auch nicht versuchen eine evtl. vorhandene index.php-Datei aufzurufen, die aber eigentlich gesperrt ist.
 
Nein, das Verzeichnis ist so konfiguriert, dass ein automatischer Index erzeugt wird.
Das Problem ist, dass man über diese Schnittstelle auf den Speicher zugreifen können soll, doch die Benutzer sollen keine Skripte ausführen dürfen.
Die Dateien werden nämlich per ftp übertragen, wenn jemand das Passwort, das in Klartext übertragen wird, abfängt, könnte er ja php-Skripte auf dem Server ausführen!
Und das soll vermieden werden.
 
Die ersten beiden Sätze verstehe ich. Doch wer greift wieso per FTP auf diese Daten zu? Wieso hast Du da die Angst, dass jemand Passwörter ausspäht? Wenn jemand per FTP zugreift, kannst Du diesen Zugriff nicht per Apache-Konfiguration behindern, das sind 2 unterschiedliche Sachen.

Wenn jemand auf php-Dateien nicht über http zugreifen soll, könnte man diese auch in ein oberhalb des Web-Verzeichnisses liegendes Verzeichnis schieben auf das man per http keinen Zugriff hat. Oder in ein Unterverzeichnis und darauf jegliche Zugriffe per http sperren, das sähe dann z.B. so aus:
Code:
RewriteEngine On
RewriteRule (.*) http://www.example.org
 
Hallo threadi,

die Dateien. Werden per ftp auf diesen Onlinespeicher geladen.
Wenn jetzt bei dieser Datenübertragung jemand das Passwort abfischt, wäre das eigentlich nicht so schlimm, denn die Daten sind für andere nicht interessant.

Jedoch könnte eine solche Person ein Skript auf den Server laden, das diesem schadet.

Daher möchte ich verhindern, dass in dem Ordner ein Skript ausgeführt werden kann.

Der Ordner soll aber weiterhin über http erreichbar sein, damit man Dateien unterwegs mit dem Smartphone etc. herunterladen kann.

(Der Zugriff ist kennwortgeschützt)

Jedoch soll es nicht möglich sein, ein Skript, das auf den Onlinespeicher liegt, auszuführen.
Der Programmtext soll unkompiliert angezeigt werden und mit "Seite speichern unter..." speicherbar sein.
Ist so etwas realisierbar, oder muss ich ein Skript schreiben, dass die Dateien von einem Ordne, auf den nicht per http zugegriffen werden kann, zum Download anbietet?
Im Moment nutze ich den Autoindex von Apache, doch besteht dabei die oben beschriebene Sicherheitslücke.
 
Die von dir gesehene Sicherheitslücke ist eigentlich der FTP-Transfer. Dateien die darüber transferiert werden könnten abgefangen werden. Betonung auf könnten. Zugangsdaten die Du in den Dateien stehen hast, sollten sich nur auf lokale Anwendungen beziehen. Zugangsdaten zu einer Datenbank z.B. würden als host "localhost" angeben. D.h. jemand der diese Zugangsdaten ausliest, könnte damit ohnehin nichts anfangen, weil sie ja nur lokal auf dem Server ausgeführt und verwendet werden können - nicht von extern.

Das einzige Risiko besteht darin, dass jemand deine FTP-Zugangsdaten ausliest und kennt. Dann (und nur dann) könnte er ja auf deinen Webspace zugreifen und Dateien manipulieren. Dann hilft aber auch jegliche Sicherung am Apache nichts, weil er diese ja dadurch außer Kraft setzen könnte (er kann ja alle Dateien bearbeiten die Du auch per FTP bearbeiten kannst). Für diesen Fall musst Du selbst deinen eigenen Computer absichern, nicht den Server. Eine regelmäßige Änderung des Passworts wie auch die Komplexität desselben sollten eine zusätzliche Hürde darstellen.
 
Genau, ich möchte verhindern, dass auf dem Server manipulierte Dateien ausgeführt werden können.
Der FTP-Zugriff geschieht ja nur auf ein Unterverzeichnis, auf das der Zugriff erlaubt ist.
das Hauptverzeichnis und die Konfigurationsdateien klommen natürlich nicht erreicht werden, das kann nur ich per ssh.
(Ich hab ja nicht nur einen 1,95€-Webspace mit nur einem FTP-Zugang)

Wenn ich jetzt für das Verzeichnis das Ausführen von Skripten und Konfiguartionsdateien in dem Unterordner, auf den per ftp zugegriffen werden kann, verbiete, ist die Sicherheitslücke erstmal geschlossen.

Nur wie geht das, mit den von mir geosteten Code klappt es nicht!
 
Danke!
Das ist genau das, was ich suche.
Doch muss ich diese Einstellung in der globalen Konfigurationsdatei setzen, und dann müsste ich es irgendwie hinkriegen, dass sie für Unterverzeichnisse auch gilt, was im Moment nicht der Fall ist.
Ist das möglich?
 
Im Manual steht, dass man php_admin_flag sowohl in einer .htaccess als auch in der globalen Konfiguration verwenden kann. Bezogen auf deinen VHost sollte die Einschränkung auf ein Directory genügen.

Code:
<Directory /dein/verzeichnis/>
php_admin_flag engine off
</Directory>

Wenn es nicht geht, schau im Apache-Handbuch nach welche Einschränkungen für Verzeichnisse inkl. Unterverzeichnisse möglich sein.
 
In deinem ersten Link steht:

php_admin_flag Name on|off
Setzt eine boolesche Konfigurationsdirektive. Dies kann nicht in .htaccess-Dateien verwendet werden. Jeder Direktiventyp, der mit php_admin_value gesetzt wird, kann nicht durch .htaccess-Direktiven oder ini_set() überschrieben werden.

Und "Directory" darf in eine .htaccess-Datei ebenfalls nicht benutzt werden.
 
Zurück
Oben