Files
florian.wilde b14bb75af0 chore: Einrichtungs-Token nirgendwo abrufbar oder versioniert
Das Token wird zwar immer nach data/ geschrieben und ist dort durch
eine eigene .htaccess geschuetzt. Landet es aber aus irgendeinem Grund
im Projektstamm, griff bisher keine Regel: die .htaccess dort sperrt
Verzeichnisse und bestimmte Dateinamen, .txt gehoerte nicht dazu. Bei
der Variante ohne eigenen Webroot waere es damit unter
https://domain/setup-token.txt abrufbar gewesen - und das Token ist der
Schluessel zur Ersteinrichtung.

Beide .htaccess-Dateien verweigern den Namen jetzt ausdruecklich, mit
und ohne mod_rewrite. Zusaetzlich ist build-release.sh gesperrt.

.gitignore schliesst setup-token.txt in jedem Verzeichnis aus, nicht
nur unter data/.
2026-08-12 18:33:35 +02:00

46 lines
1.8 KiB
ApacheConf
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================
# urlshort-qr-gen – .htaccess fuer das Projekt-Stammverzeichnis
#
# Diese Datei wird NUR gebraucht, wenn beim Hoster der Webroot
# nicht auf /public gelegt werden kann (Shared-Hosting-Variante B
# in der README). Dann liegt das komplette Projekt im Webroot und
# diese Regeln leiten intern nach public/ weiter – gleichzeitig
# werden alle uebrigen Ordner gesperrt.
#
# Liegt der Webroot korrekt auf /public, ist diese Datei
# wirkungslos (sie liegt dann ausserhalb des Webroots).
# =============================================================
Options -Indexes
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine On
# 1) Nicht-oeffentliche Verzeichnisse hart sperren.
RewriteRule ^(src|templates|migrations|tests|docker|data|vendor|\.git)(/|$) - [F,L]
# 2) Konfigurations- und Projektdateien sperren.
RewriteRule ^(\.env|composer\.(json|lock)|phpunit\.xml|Dockerfile|docker-compose\.ya?ml|.*\.md|build-release\.sh)$ - [F,L]
# 3) Das Einrichtungs-Token gehoert nach data/ und ist damit ohnehin
# gesperrt. Falls es doch einmal woanders liegt, hier ebenfalls
# verweigern - es waere sonst der Schluessel zur Installation.
RewriteRule (^|/)setup-token\.txt$ - [F,L]
# 4) Bereits nach public/ aufgeloeste Anfragen nicht erneut umschreiben.
RewriteCond %{REQUEST_URI} !^/?public/
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
# Zusaetzlicher Schutz, falls mod_rewrite fehlt.
<FilesMatch "^(\.env.*|composer\.(json|lock)|phpunit\.xml|.*\.md|Dockerfile|setup-token\.txt|build-release\.sh)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
</FilesMatch>