You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Joerg Behrens <be...@takenet.de> on 2009/10/05 10:47:08 UTC
Re: Keine Programmausführung in upload-Verzeichnis zulassen.
mod4wb@heysoft.de schrieb:
> Hallo,
>
> es geht um eine XAMPP-Installation. Trotz Studiums diverser Dokumentatione
> habe ich folgendes Problem:
> Man kann in jedem Unterverzeichnis von htdocs php-Dateien ausführen, das
> ist so gewollt.
> Es gibt ein Upload-Verzeichnis, in das man Dateien hochladen kann.
> Dateien in diesem Verzeichnis sollen nicht ausführbar sein, sondern zum
> Download angeboten werden. Da das alles von einem Modul gehandelt wird,
> welches auf vielen Rechnern installiert werden wird, ist es keine Option,
> die Einstellungen anderswo als in der .htaccess vorzunehmen.
- Die Anwendung sollte die Daten oberhalb des htdocs Speichern damit der
Webserver da nie hinkommt
- Die Anwendung muesste doch eh generische Dateinamen erstelen um auch
unterschiedliche Dateien mit gleichem Namen verarbeiten zukoennen bzw.
um Sonderzeichgen auch Sicher verarbeiten zukoennen. Dabei brauchts dann
keine Dateiendungen mehr ueber welche der Webserver die Zuordnung zu
Scriptparsern macht.
> Nun habe ich in der .htaccess folgende Zeile eingetragen
> Options -Indexes -ExecCGI
>
> Das Auflisten des Verzeichnisinhaltes wird dadurch unterbunden, aber das
> Ausführen von Scriptdateien ist trotzdem möglich.
> Fragen:
> 1. Warum klappt das Ausführen von Scripts trotz "-ExecCGI" noch?
Weil bei dir PHP als Modul laeueft und nicht ueber CGI.
Gruss
Joerg
--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Keine Programmausführung in upload-Verzeichnis zulassen.
Posted by Mario Brandt <jb...@gmail.com>.
> Zurueck zum Thema:
> Es gibt die Option "php_engine = Off" im Apache zu verwenden wenn man PHP
> als Modul benutzt. Das funktioniert in der httpd.conf und wahrscheinlich
> auch in einer .htaccess. Einfach mal Doku lesen oder ausprobieren.
>
In der httpd.conf
PHP_Admin_value "Engine" "Off"
oder in einer .htaccess Datei
PHP_value "Engine" "Off"
Mario
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Keine Programmausführung in upload-Verzeichnis zulassen.
Posted by Joerg Behrens <be...@takenet.de>.
mod4wb@heysoft.de schrieb:
>> Das heist dein Wrapper macht die Authentifizierung sofern Noetig, das
>> Accounting und generiert dann die passenden HTTP Header und schiebt per
>> readfile($file); dem Inhalt zum Client.
>
> Das hat den Nachteil, daß alle Inhalte "durch das Script" müssen, was sich
> bei einer gut besuchten Site zum Flaschenhals auswachsen könnte.
Diese Moeglichkeit besteht.
> Wenn ich nach der Authentifizierung einfach eine Weiterleitung auf die
> Datei mache, hat das Script viel weniger zu tun.
Das heist die Datei waere auch ohne Authentifizierung erreichbar
letztendlich.
Zurueck zum Thema:
Es gibt die Option "php_engine = Off" im Apache zu verwenden wenn man
PHP als Modul benutzt. Das funktioniert in der httpd.conf und
wahrscheinlich auch in einer .htaccess. Einfach mal Doku lesen oder
ausprobieren.
Aber richtig zufrieden waere ich damit nicht, da es immer besser ist
eine Whitelist zuhaben als eine Blacklist an *dieser Stelle*. Wer weis
was in dem Apache noch so alles erlaubt oder mal spaeter freigeschaltet
wird an CGI/SSI/Perl oder anderem Kram welchen man nicht kennt.
Gruss
Joerg
--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Keine Programmausführung in upload-Verzeichnis zulassen.
Posted by "mod4wb@heysoft.de" <mo...@heysoft.de>.
> Das heist dein Wrapper macht die Authentifizierung sofern Noetig, das
> Accounting und generiert dann die passenden HTTP Header und schiebt per
> readfile($file); dem Inhalt zum Client.
Das hat den Nachteil, daß alle Inhalte "durch das Script" müssen, was sich
bei einer gut besuchten Site zum Flaschenhals auswachsen könnte.
Wenn ich nach der Authentifizierung einfach eine Weiterleitung auf die
Datei mache, hat das Script viel weniger zu tun.
Gruß Frank
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Keine Programmausführung in upload-Verzeichnis zulassen.
Posted by Joerg Behrens <be...@takenet.de>.
mod4wb@heysoft.de schrieb:
> Vielen Dank für die schnelle Antwort, Jörg.
> Ich hake noch mal unten im Text nach.
..
> Die Anwendung ändert den Dateinamen, so daß der Zugriff zwecks Download
> nur über das Modul möglich ist. Die Dateiendungen sollen aber bestehen
> bleiben - wenn jemand z.B. eine pdf-Datei runterlädt ohne die richtige
> Endung, wäre das wohl kaum akzeptabel.
Die Anwendung muss den Download ueber einen Wrapper alà
download.php?id=123 oder aber mittels ModRewrite
/download/123/meine%20datei.pdf zulassen.
Da deine Anwendung den Original Namen hat kann dieser dem Client
natuerlich spaeter mitgeteilt werden.
Das heist dein Wrapper macht die Authentifizierung sofern Noetig, das
Accounting und generiert dann die passenden HTTP Header und schiebt per
readfile($file); dem Inhalt zum Client.
Die eigentlichen Dateien tust du in /store ablegen und dazu eine
.htaccess mit "deny from all" so das keiner heran kommt.
Gruss
Joerg
--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Keine Programmausführung in upload-Verzeichnis zulassen.
Posted by "mod4wb@heysoft.de" <mo...@heysoft.de>.
Vielen Dank für die schnelle Antwort, Jörg.
Ich hake noch mal unten im Text nach.
> - Die Anwendung sollte die Daten oberhalb des htdocs Speichern damit der
> Webserver da nie hinkommt
Ich schreibe an einem Modul für ein CMS, das auch auf vielen Shared
Hosting Servern läuft. Da gibt es Provider, die ein Schreiben außerhalb
von htdocs nicht zulassen, deshalb fällt diese Möglichkeit leider weg.
> - Die Anwendung muesste doch eh generische Dateinamen erstelen um auch
> unterschiedliche Dateien mit gleichem Namen verarbeiten zukoennen bzw.
> um Sonderzeichgen auch Sicher verarbeiten zukoennen. Dabei brauchts dann
> keine Dateiendungen mehr ueber welche der Webserver die Zuordnung zu
> Scriptparsern macht.
Die Anwendung ändert den Dateinamen, so daß der Zugriff zwecks Download
nur über das Modul möglich ist. Die Dateiendungen sollen aber bestehen
bleiben - wenn jemand z.B. eine pdf-Datei runterlädt ohne die richtige
Endung, wäre das wohl kaum akzeptabel.
>> Fragen:
>> 1. Warum klappt das Ausführen von Scripts trotz "-ExecCGI" noch?
>
> Weil bei dir PHP als Modul laeueft und nicht ueber CGI.
Wieder was gelernt, danke.
Neue Frage:
Nun kann ich immer noch mit so was wie
<FilesMatch "\.(php[0-9]?|js|pl)$">
SetHandler text/plain
</FilesMatch>
die Ausführung von Dateien verhindern. Aber dann bräuchte ich eine Liste
mit allen Dateiendungen der auf dem Server ausführbaren Scripte - wo
bekomme ich die her?
Außerdem ist das eine Blacklist-Methode, wenn es die nächste Scriptsprache
gibt, hab ich wieder ein Problem. Eine generische Lösung wäre da besser.
Gruß Frank
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------