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/.
This commit is contained in:
2026-08-12 18:33:35 +02:00
parent 583d9f0ae2
commit b14bb75af0
3 changed files with 11 additions and 5 deletions
+8 -3
View File
@@ -21,15 +21,20 @@ AddDefaultCharset UTF-8
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)$ - [F,L]
RewriteRule ^(\.env|composer\.(json|lock)|phpunit\.xml|Dockerfile|docker-compose\.ya?ml|.*\.md|build-release\.sh)$ - [F,L]
# 3) Bereits nach public/ aufgeloeste Anfragen nicht erneut umschreiben.
# 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)$">
<FilesMatch "^(\.env.*|composer\.(json|lock)|phpunit\.xml|.*\.md|Dockerfile|setup-token\.txt|build-release\.sh)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>