.htaccess: Git-Verzeichnis auch ohne mod_rewrite und mod_alias sperren
Die Regel gegen Punkt-Pfade stand ausschliesslich in IfModule-Bloecken fuer mod_rewrite und mod_alias. Ist keines der beiden geladen, entfaellt sie ersatzlos und ohne Fehlermeldung, und .git waere wieder abrufbar - genau das Fail-Open, das derselbe Commit-Satz bei restricted/.htaccess beseitigen sollte. Ergaenzt um eine Notbremse aus Kern-Direktiven, die immer verfuegbar sind: FilesMatch auf die Einstiegsdateien eines Git-Verzeichnisses (HEAD, config, index, packed-refs und weitere) sowie pack und idx in der Typenliste. Ohne diese Dateien laesst sich das Verzeichnis nicht aufrollen, weil die Objektdateien hexadezimale Namen tragen. FilesMatch passt nur auf Dateinamen, nicht auf Pfadbestandteile, und kann .git deshalb nicht vollstaendig sperren. Der Kommentar in der Datei sagt das und benennt die belastbare Loesung: .git und restricted/ ausserhalb des Dokumentenbaums legen. Gegengeprueft: von den 40 Adressen, die die Seiten laden, faellt keine unter die neuen Regeln; in .git greifen sie zusaetzlich fuer 13 Dateien. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,28 @@
|
|||||||
# --- Dateitypen, die der Browser nie anfordert ---
|
# --- Dateitypen, die der Browser nie anfordert ---
|
||||||
# Konfiguration, Python-Skripte, Datenhaltung, Vorlagen und Archive. Die
|
# Konfiguration, Python-Skripte, Datenhaltung, Vorlagen und Archive. Die
|
||||||
# Seite laedt ausschliesslich .php, .css, .js, Bilder und Schriften.
|
# Seite laedt ausschliesslich .php, .css, .js, Bilder und Schriften.
|
||||||
<FilesMatch "\.(ini|py|pyc|json|md|log|bak|example|sql|sqlite|db|tgz|gz|zip|yml|yaml)$">
|
<FilesMatch "\.(ini|py|pyc|json|md|log|bak|example|sql|sqlite|db|tgz|gz|zip|yml|yaml|pack|idx)$">
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Order allow,deny
|
||||||
|
Deny from all
|
||||||
|
</IfModule>
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
|
# --- Notbremse ohne Modulabhaengigkeit ---
|
||||||
|
# Die Punkt-Regel oben braucht mod_rewrite oder mod_alias. Fehlen beide, faellt
|
||||||
|
# sie ersatzlos und ohne Fehlermeldung aus - und .git waere wieder abrufbar.
|
||||||
|
# FilesMatch gehoert zum Kern und ist immer verfuegbar. Es passt allerdings nur
|
||||||
|
# auf Dateinamen, nicht auf Pfadbestandteile, kann .git also nicht vollstaendig
|
||||||
|
# sperren. Es nimmt den ueblichen Auslesewerkzeugen aber den Einstieg: ohne
|
||||||
|
# HEAD, config, index und packed-refs laesst sich das Verzeichnis nicht
|
||||||
|
# aufrollen, weil die Objektdateien hexadezimale Namen tragen.
|
||||||
|
#
|
||||||
|
# Belastbar waere nur, .git und restricted/ ausserhalb des Dokumentenbaums zu
|
||||||
|
# legen. Diese Regeln sind Schadensbegrenzung, keine Grenze.
|
||||||
|
<FilesMatch "^(HEAD|ORIG_HEAD|FETCH_HEAD|MERGE_HEAD|COMMIT_EDITMSG|config|index|packed-refs|description|shallow|gitattributes|gitignore|gitmodules)$">
|
||||||
<IfModule mod_authz_core.c>
|
<IfModule mod_authz_core.c>
|
||||||
Require all denied
|
Require all denied
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|||||||
Reference in New Issue
Block a user