From 16e236c7f8c79341e2f59be306f75b6096fc07ad Mon Sep 17 00:00:00 2001 From: Moirtz Wagner Date: Fri, 28 Aug 2026 15:53:30 +0200 Subject: [PATCH] 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 --- .htaccess | 31 +++++++++++++++++++++++++++++++ restricted/.htaccess | 19 ++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 .htaccess diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..e4283e9 --- /dev/null +++ b/.htaccess @@ -0,0 +1,31 @@ +# Zugriffsschutz fuer den gesamten Web-Root. +# +# restricted/.htaccess schuetzt nur ein Verzeichnis. Die Regeln hier greifen +# fuer den ganzen Baum und fangen ab, was ausserhalb davon liegt - allen voran +# das Git-Verzeichnis, ueber das sich sonst der komplette Quellcode samt +# Historie herunterladen laesst. + +# --- Punkt-Verzeichnisse und -Dateien: .git, .claude, .gitignore --- +# .well-known bleibt frei, das brauchen Zertifikatsausstellungen. + + RewriteEngine On + RewriteRule (^|/)\.(?!well-known/) - [F,L] + + + + RedirectMatch 404 (^|/)\.(?!well-known/) + + + +# --- 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 + + diff --git a/restricted/.htaccess b/restricted/.htaccess index 3418e55..c027241 100644 --- a/restricted/.htaccess +++ b/restricted/.htaccess @@ -1 +1,18 @@ -deny from all \ No newline at end of file +# 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. + + + # Apache 2.4 + Require all denied + + + # Apache 2.2 + Order allow,deny + Deny from all +