Spezielle Mime-Type-Definitionen in .htaccess

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Spezielle Mime-Type-Definitionen in .htaccess

Beitrag von uname » 05.05.2017 09:31:59

Ich würde gerne über .htaccess die Mime-Types wie folgt setzen:

1.) application/x-php nur für die Datei index.php
2.) application/octet-stream für alle anderen Dateien inkl. aller PHP-Dateien wie z.B. test.php

Ich möchte mein Upload-Script etwas mehr absichern, welches die hochgeladenen Dateien im gleichen Ordner ablegt.
Natürlich unterbinde ich schon jetzt serverseitig per PHP den Upload von unterschiedlichen PHP-Endungen und von der Datei .htaccess. Aber sicherer wäre es wohl, wenn nur index.php vom Apache2-Webserver ausführbar wäre.

Ich habe einiges versucht inkl. FilesMatch und AddType. Die Datei .htaccess selbst funktioniert problemlos.

Kann mir jemand eine Konfiguration bauen, die einfach nur funktioniert oder eine bessere Lösung vorschlagen? Der Upload in einen anderen Ordner ist keine Option. Es soll alles einfach sein. Bei tatsächlich hohen Sicherheitsanforderungen würde ich natürlich den Upload in einen anderen Ordner auslagern. Dient aber alles nur privaten Zwecken.

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Spezielle Mime-Type-Definitionen in .htaccess

Beitrag von novalix » 05.05.2017 15:17:01

Stehe ein wenig auf dem Schlauch.
PHP-Dateien, die der Webserver nicht ausführen können soll, haben im DocumentRoot doch eher nichts zu suchen. Bleiben die übrig, die ausgeführt werden sollen. Falls Deine Upload-Funktionalität nicht direkt in der index.php steckt :roll: , hast Du wohl so etwas wie eine upload.php und die sollte dann ja auch ausführbar sein.
Ein eigenes Upload-Verzeichnis behebt imho mehr Schwierigkeiten, als es erzeugt.
Darin könntest Du eine eigene .htaccess anlegen und etwas in der Art rein schreiben:

Code: Alles auswählen

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} .(?i:php|phtml|php3|php4|php5|inc)$
    RewriteRule .* - [F]

    RewriteCond %{REQUEST_URI} !\.(?i:jpg|png|gif|usw)$
    RewriteRule .* - [F]
</IfModule>
Regel 1 schreibt alles in den Orkus, was nach php aussieht, Regel 2 alles, was nicht die aufgeführten Dateierweiterungen an Bord hat.
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

Antworten