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/.
46 lines
1.8 KiB
ApacheConf
46 lines
1.8 KiB
ApacheConf
# =============================================================
|
||
# 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>
|