104 lines
4.1 KiB
Plaintext
104 lines
4.1 KiB
Plaintext
- Sicherheit: Wieviel besser ist es, das Lister-Verzeichnis dem PHP-Nutzer zu übereignen, anstatt
|
|
die Rechte auf 757 zu setzen? Lässt sich dass sinnvoll nutzen?
|
|
|
|
IST DER NUTZER IMMER "nobody/nogroup"?
|
|
|
|
- Es sollte erst das Passwort geprüft und *danach* hochgeladen werden!
|
|
- Pause nach Passworteingabe ist kein Sicherheitsgewinn, da das Skript einfach
|
|
erneut aufgerufen werden kann. Lässt sich die Anzahl der Aufrufe aktiv begrenzen?
|
|
- Erweiterung:
|
|
Zugriff auf Unterverzeichnisse (im Moment wird bei 'show' & 'download' aber noch geprüft, ob sich die
|
|
angeforderte Datei im selben Verzeichnis befindet!)
|
|
Upload-Limit in Byte setzen
|
|
Beschreibungen in Textdatei speichern
|
|
Passwort für lesenden Zugriff (optional)
|
|
/*
|
|
* If true, the password is requested for up- AND download of files.
|
|
* (The password has to be set for this, see installation.txt)
|
|
*
|
|
* Default: false
|
|
*/
|
|
define('REQUEST_PASSWORD_FOR_DOWNLOAD', false);
|
|
Umbenennen von Dateien
|
|
MIME-Types für Downloads mitschicken, so dass man z.B. Bilder direkt im Browser ansehen kann
|
|
Systeminfo mit Werten von "post_max_size" und "upload_max_filesize"
|
|
|
|
http://www.simonstenhouse.net/index.php?area=projects
|
|
|
|
Passwort-Schutz: Man könnte das Passwort auch als Textdatei in das Upload-Verzeichnis legen. Ist das Verzeichnis
|
|
sicher, ist auch das Passwort sicher, auch bei Fehlkonfiguration des Servers
|
|
|
|
Verzeichnisrechte & htaccess analog zu Gallery2: http://codex.gallery2.org/Gallery2:Security#Short_Check_List
|
|
-------------------------------
|
|
Eingetragen bei:
|
|
http://www.php-resource.de/
|
|
http://resourceindex.com/
|
|
http://www.scripts.com/
|
|
|
|
-------------------------------
|
|
Sicherheits-Check! Die Datei darf nicht ausführbar sein
|
|
-> Opt-In oder Opt-Out Lösung mit Extension-Liste (nicht gut, immer unvollständig)
|
|
|
|
BESSERE SICHERHEITSLÖSUNG: Statt irgendwelche Dateichecks wird einfach der Inhalt der
|
|
Datei direkt vom Skript gelesen und an den Browser übermittelt. Hochgeladene Dateien dürfen
|
|
nicht direkt aufrufbar sein!
|
|
http://www.acunetix.de/websitesecurity/php-security-4.htm
|
|
http://lists.phpbar.de/pipermail/php/Week-of-Mon-20030915/001656.html
|
|
http://lists.phpbar.de/pipermail/php/Week-of-Mon-20030915/001652.html
|
|
-------------------------------
|
|
|
|
Größenprobleme: http://se2.php.net/manual/de/function.readfile.php#48683
|
|
|
|
Informationen zu PHP-Variablen post_max_size und upload_max_filesize anzeigen
|
|
upload_tmp_dir ist sicherheitstechnisch ebenfalls interessant
|
|
|
|
Sicherheit:
|
|
Am Schluss noch einmal http://www.acunetix.de/websitesecurity/php-security-4.htm lesen
|
|
Meta-Probleme wie "Upload von Schadcode, Ausführung durch ein anderes, unsicheres
|
|
Skript auf demselben Server" beachten
|
|
Auf jeden Fall auf Sicherheitsproblematik hinweisen!
|
|
|
|
======================================
|
|
Vereinfachung, .htaccess, etc.
|
|
|
|
Kozept für die Vereinfachung:
|
|
1. Passwort wird über (reservierte) Datei "password.txt" definiert. Ist sie vorhanden,
|
|
wird ein Passwort gebraucht, sonst nicht.
|
|
2. Am schönsten wäre: Hochgeladene Dateien wieder im selben Verzeichnis wie das Skript,
|
|
das als einzige Datei ausführbar ist - funktioniert das mit htaccess?
|
|
Idee: Irgendwas mit <IfDefine> zum aktivieren von index.php und sonst Deny from all
|
|
--> http://httpd.apache.org/docs/2.2/howto/htaccess.html#cgi
|
|
--> http://aktuell.de.selfhtml.org/artikel/server/htaccess-faq/
|
|
--> http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch
|
|
--> http://www.lrz-muenchen.de/services/schulung/unterlagen/regul/regul-14.html
|
|
--> http://www.danielfett.de/df_artikel_regex#hnegativelookaheadsundlookbehinds
|
|
--> http://www.drweb.de/php/regulaere-ausdruecke.shtml
|
|
|
|
Funktoniert:
|
|
# Set lister.php as index file
|
|
DirectoryIndex lister.php
|
|
|
|
# Deny access to all files
|
|
<FilesMatch ".">
|
|
Deny from all
|
|
</FilesMatch>
|
|
|
|
# Allow access access only for lister.php
|
|
<Files lister.php>
|
|
Allow from all
|
|
</Files>
|
|
|
|
---------------
|
|
|
|
Funktioniert fast, aber DirectoryIndex wird ignoriert:
|
|
# Set lister.php as index file
|
|
DirectoryIndex lister.php
|
|
|
|
# Deny access to all files
|
|
Order Allow,Deny
|
|
|
|
# Allow access access only for lister.php
|
|
<Files lister.php>
|
|
Allow from all
|
|
</Files>
|