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:
@@ -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.
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteRule (^|/)\.(?!well-known/) - [F,L]
|
||||||
|
</IfModule>
|
||||||
|
<IfModule !mod_rewrite.c>
|
||||||
|
<IfModule mod_alias.c>
|
||||||
|
RedirectMatch 404 (^|/)\.(?!well-known/)
|
||||||
|
</IfModule>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# --- Dateitypen, die der Browser nie anfordert ---
|
||||||
|
# Konfiguration, Python-Skripte, Datenhaltung, Vorlagen und Archive. Die
|
||||||
|
# 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)$">
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Order allow,deny
|
||||||
|
Deny from all
|
||||||
|
</IfModule>
|
||||||
|
</FilesMatch>
|
||||||
+18
-1
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user