Mit LiveConfig 2.8 entfällt das .htaccess Security.
1. Die Verwendung von `FollowSymLinks` ist nicht mehr gestattet. Bitte verwenden Sie stattdessen die Option `SymLinksIfOwnerMatch`. `Diese Restriktion besteht bereits länger.` \\ Die Verwendung von `FollowSymLinks` ermöglicht interne Angriffe von einem Kunden-Account auf andere, um so fremde Daten auszulesen. Wenngleich diese Option keine Angriffe von außen ermöglicht, wird dies als Sicherheitsrisiko eingestuft.
2. Über die Anweisung `SetHandler` ist der Zugriff auf fremde Daten ebenfalls möglich und darf daher nicht mehr verwendet werden. Wird `SetHandler` eingesetzt, um mittels `SetHandler
none` die Script-Ausführung zu unterbinden, so empfehlen wir stattdessen den Einsatz einer `RewriteRule`, um Zugriffe zu unterbinden.
Die Anpassungen als Beispiel
Wir möchten Ihnen beide Anpassungen der .htaccess
anhand des CMS Drupal erläutern:
Die standardmäßig von Drupal ausgelieferte .htaccess
beinhaltet die Option FollowSymLinks
. Bitte verwenden Sie statt dessen die Option
SymLinksIfOwnerMatch
.
# Follow symbolic links in this directory.
Options +FollowSymLinks
wird zu
# Follow symbolic links in this directory.
Options +SymLinksIfOwnerMatch
Drupal legt im Ordner sites/default/files/
automatisch eine weitere .htaccess
-Datei an, welche ebenfalls die Option FollowSymLinks
beinhaltet. Verwenden Sie bitte auch hier SymLinksIfOwnerMatch
.
Außerdem wird hier die Anweisung SetHandler
verwendet, um das Ausführen von hochgeladenen Dateien zu unterbinden. Der Gedanke hinter dieser Verwendung der Anweisung ist gut gemeint, allerdings verliert diese ihre Wirkung, sobald Ihr Drupal z.B. auf einem NGINX-Server gehostet ist.
Grundsätzlich sollte bereits das Hochladen
der ausführbaren Dateien innerhalb der Ordnerstruktur der CMS-Installation unterbunden werden. Statt lediglich die Ausführung bzw. den Zugriff darauf zu unterbinden, sollten entsprechende sensible Inhalte komplett außerhalb des öffentlichen Zugriffs (sprich, außerhalb des DocumentRoot
)
abgelegt werden.
Da einige CMS-Systeme diese aber noch nicht bieten, verwenden Sie bitte
stattdessen eine RewriteRule
wie in unserem Beispiel.
# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal\_Security\_Do\_Not\_Remove\_See\_SA\_2006\_006
<Files *>
# Override the handler again if we're run later in the evaluation list.\
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>
wird zu
# SetHandler Drupal\_Security\_Do\_Not\_Remove\_See\_SA\_2006\_006
RewriteEngine on
RewriteRule .+\\.(php\[3457\]?|pht|phtml|phps|pl|py|pyc|pyo|sh)\$ - \[F,L\]
<Files `>
# Override the handler again if we're run later in the evaluation list.\
# SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>