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/.
60 lines
1.9 KiB
ApacheConf
60 lines
1.9 KiB
ApacheConf
# =============================================================
|
||
# urlshort-qr-gen – Apache-Konfiguration fuer den Webroot
|
||
# =============================================================
|
||
|
||
<IfModule mod_rewrite.c>
|
||
RewriteEngine On
|
||
|
||
# Falls die Anwendung in einem Unterverzeichnis liegt, ermittelt
|
||
# Apache die Basis in der Regel selbst. Bei Problemen hier setzen:
|
||
# RewriteBase /
|
||
|
||
# Vorhandene Dateien und Verzeichnisse direkt ausliefern
|
||
# (assets/, favicon.ico, ...).
|
||
RewriteCond %{REQUEST_FILENAME} -f [OR]
|
||
RewriteCond %{REQUEST_FILENAME} -d
|
||
RewriteRule ^ - [L]
|
||
|
||
# Alles Uebrige an den Front Controller.
|
||
RewriteRule ^ index.php [L]
|
||
</IfModule>
|
||
|
||
<IfModule !mod_rewrite.c>
|
||
# Ohne mod_rewrite funktionieren nur Aufrufe mit index.php/... –
|
||
# bitte mod_rewrite beim Hoster aktivieren.
|
||
ErrorDocument 404 /index.php
|
||
</IfModule>
|
||
|
||
# Authorization-Header durchreichen (manche CGI/FastCGI-Setups)
|
||
<IfModule mod_setenvif.c>
|
||
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
|
||
</IfModule>
|
||
|
||
# Verzeichnislisting abschalten
|
||
Options -Indexes
|
||
|
||
# Standard-Zeichensatz
|
||
AddDefaultCharset UTF-8
|
||
|
||
# Sicherheits-Header fuer statische Dateien.
|
||
# "setifempty" statt "set", weil die Anwendung dieselben Header fuer
|
||
# PHP-Antworten selbst setzt - sonst wuerden sie doppelt ausgeliefert.
|
||
<IfModule mod_headers.c>
|
||
Header setifempty X-Content-Type-Options "nosniff"
|
||
Header setifempty X-Frame-Options "DENY"
|
||
Header setifempty Referrer-Policy "strict-origin-when-cross-origin"
|
||
</IfModule>
|
||
|
||
# Statische Assets duerfen gecacht werden
|
||
<IfModule mod_expires.c>
|
||
ExpiresActive On
|
||
ExpiresByType text/css "access plus 7 days"
|
||
ExpiresByType application/javascript "access plus 7 days"
|
||
ExpiresByType image/svg+xml "access plus 7 days"
|
||
</IfModule>
|
||
|
||
# Kein Zugriff auf Konfigurations- und Versionsdateien
|
||
<FilesMatch "^(\.env.*|composer\.(json|lock)|.*\.md|.*\.ya?ml|Dockerfile|setup-token\.txt)$">
|
||
Require all denied
|
||
</FilesMatch>
|