From b14bb75af042b23b1f9ebc4cb7816122a88954da Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Wed, 12 Aug 2026 18:33:35 +0200 Subject: [PATCH] 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/. --- .gitignore | 3 ++- .htaccess | 11 ++++++++--- public/.htaccess | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index f6b5992..e368869 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,8 @@ !/data/.gitkeep # Schutzdatei muss mit ausgeliefert werden !/data/.htaccess -/data/setup-token.txt +# Das Einrichtungs-Token gehoert nirgendwo ins Repository. +setup-token.txt /public/uploads/* !/public/uploads/.gitkeep /vendor/ diff --git a/.htaccess b/.htaccess index b657c57..82284ab 100644 --- a/.htaccess +++ b/.htaccess @@ -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] # Zusaetzlicher Schutz, falls mod_rewrite fehlt. - + Require all denied diff --git a/public/.htaccess b/public/.htaccess index d8b5f4b..f4295ba 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -54,6 +54,6 @@ AddDefaultCharset UTF-8 # Kein Zugriff auf Konfigurations- und Versionsdateien - + Require all denied