From 37270acb2347014424c56819864daf275ac8b0b4 Mon Sep 17 00:00:00 2001 From: Moirtz Wagner Date: Fri, 28 Aug 2026 16:16:26 +0200 Subject: [PATCH] .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 --- .htaccess | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/.htaccess b/.htaccess index e4283e9..b450dc7 100644 --- a/.htaccess +++ b/.htaccess @@ -20,7 +20,28 @@ # --- Dateitypen, die der Browser nie anfordert --- # Konfiguration, Python-Skripte, Datenhaltung, Vorlagen und Archive. Die # Seite laedt ausschliesslich .php, .css, .js, Bilder und Schriften. - + + + Require all denied + + + Order allow,deny + Deny from all + + + +# --- 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. + Require all denied