Verzeichnisschutz haerten: Web-Root absichern, .htaccess versionsfest machen

restricted/.htaccess enthielt nur "deny from all". Das ist Apache-2.2-Syntax;
unter 2.4 funktioniert sie ausschliesslich mit geladenem mod_access_compat und
quittiert sonst mit einem Fehler. Der Schutz haengt damit an einem Modul, das
es nur aus Abwaertskompatibilitaet gibt. Jetzt stehen "Require all denied"
(2.4) und "Order allow,deny" (2.2) nebeneinander in IfModule-Bloecken.

Neu dazu ein .htaccess im Web-Root, denn restricted/ war nur ein Verzeichnis
von mehreren:

- Punkt-Pfade werden gesperrt. Das Git-Verzeichnis liegt im Web-Root; ueber
  .git liesse sich sonst der komplette Quellcode samt Historie herunterladen.
  Betrifft 65 Dateien, darunter .git/config und .claude/settings.local.json.
  .well-known bleibt frei fuer Zertifikatsausstellungen.
- Dateitypen gesperrt, die der Browser nie anfordert: ini, py, pyc, json, md,
  log, bak, example, sql, sqlite, db, tgz, gz, zip, yml, yaml. Betrifft 24
  Dateien, darunter deviceDiscovery/config.ini mit Zugangsdaten,
  tahoma_devices*.json und die Python-Skripte.

Gegengeprueft: von den 37 Adressen, die die Seiten laden, faellt keine unter
die neuen Regeln. Das Frontend holt ausschliesslich php, css, js, Bilder und
Schriften; tahoma_devices_classic.json liest PHP serverseitig.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 15:53:30 +02:00
co-authored by Claude Opus 5
parent 48017e895a
commit 16e236c7f8
2 changed files with 49 additions and 1 deletions
+18 -1
View File
@@ -1 +1,18 @@
deny from all
# Kein Zugriff von aussen. Die Dateien hier werden ausschliesslich
# serverseitig eingebunden.
#
# "deny from all" allein setzt auf Apache 2.4 voraus, dass mod_access_compat
# geladen ist. Fehlt das Modul, quittiert Apache die Direktive mit einem
# Fehler und liefert 500 - der Schutz haengt also an einem Modul, das nur aus
# Abwaertskompatibilitaet existiert. Beide Schreibweisen nebeneinander machen
# ihn davon unabhaengig.
<IfModule mod_authz_core.c>
# Apache 2.4
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order allow,deny
Deny from all
</IfModule>