Files
Smart-Dashboard/.htaccess
T
adminandClaude Opus 5 16e236c7f8 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>
2026-08-28 15:53:30 +02:00

32 lines
1.1 KiB
ApacheConf

# 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>