2011-01-03 18 views
2

Ich arbeite an einem Online-Dateimanager als Teil einer Website, die auf einem LAMP-Stack läuft. Welche Dateierweiterungen sollte ich für hochgeladene Dateien verbieten? ".php" ist offensichtlich.Sichere Dateierweiterungen

+1

Überprüfung auf Dateierweiterung funktioniert nicht 100%, Benutzer kann PHP-Skript mit jeder Art von Erweiterung außer PHP hochladen – ajreal

Antwort

5

Ich glaube, Sie besser dran configuring Apache sein würden, so dass es nicht einmal versuchen, Skripte aus dem Upload-Verzeichnis auszuführen. Dann ist es egal, ob jemand eine .php-Datei hochlädt - wenn jemand anderes zu dieser Datei blättert, wird der Server sie wie jede .gif oder .jpg-Datei bereitstellen, anstatt zu versuchen, sie auf dem Server auszuführen - d Der Benutzer wird lediglich eine .php-Datei auf seinen Computer herunterladen.

(Beachten Sie, dass ich nichts von einem Apache-Experten bin, also weiß ich nicht genau, welche Konfigurationsänderungen Sie vornehmen müssen, um die Ausführung des Skripts zu deaktivieren - aber es sollte einfach sein, Ihre Konfigurationsdatei anzusehen, um zu sehen, was bereits auf für Ihr Hauptverzeichnis und umgekehrt für Ihr Upload-Verzeichnis.)

Sie müssen auch auf die GIFAR exploit achten.

6

Ich würde über den anderen Weg gehen. Nur Spezifikationsdateien, die Sie zur Veröffentlichung zulassen. Ansonsten kann es eine Vielzahl von Dateitypen geben, die Sie nicht in Betracht ziehen und die sehr gefährlich sein können. Betrachten Sie Ihre "PHP verbieten", haben Sie auch ".php5" oder ".phps" betrachtet? Es ist viel besser, ein paar Minuten zu nehmen und eine Liste der spezifischen Typen zusammenzustellen, die Sie zulassen. Dies erfordert ein wenig Front-Loading, aber am Ende wird wahrscheinlich Sie große Kopfschmerzen ersparen.

+2

Unsinn, kann jeder Benutzer noch ein PHP-Skript durch Fälschen einer falschen Erweiterung hochladen – ajreal

+3

Wie würde ein PHP-Skript mit einem gefälschte Erweiterung von Apache ausgeführt werden? – Dwayne

0

Vergessen Sie nicht .html Dateien auch.

Nicht nur müssen Sie Benutzer nicht zulassen aus Dateien ausführen, die sie hochgeladen haben, müssen Sie auch die Portion Benutzer hochgeladen HTML stark beschränken. Jemand kann Ihre Anmeldung und Authentifizierung mit etwas Javascript untergraben. Obwohl es auf Ihrem Server nicht ausgeführt wird, kann es riskant sein, wenn es von Ihrer Domäne aus bereitgestellt wird.

Sie sollten niemals eine vom Benutzer hochgeladene Datei ausführen, noch sollten Sie sie zurückgeben.

+1

Dies kann gemindert werden, indem die Dateien von einer separaten Domäne bereitgestellt werden, sodass Sie nicht auf Ihre Cookies zugreifen können. –

-2

Apache ermöglicht auch die dezentrale Verwaltung der Konfiguration über spezielle Dateien innerhalb des Webbaums. Die Dateien werden normalerweise als .htaccess bezeichnet, Sie können jedoch einen beliebigen Namen in der AccessFileName-Direktive verwenden. Richtlinien, die in .htaccess-Dateien platziert werden, gelten für das Verzeichnis, in dem Sie die Datei und alle Unterverzeichnisse platzieren. Die .htaccess-Dateien folgen der gleichen Syntax wie die Hauptkonfigurationsdateien. Da .htaccess-Dateien bei jeder Anforderung gelesen werden, werden Änderungen in diesen Dateien sofort wirksam.

+0

Bitte werfen Sie einen Blick auf [Wie zu beantworten] (http://stackoverflow.com/questions/how-to-answer). –