2984d93e7e
Sicherheit: - progress.php: IDOR geschlossen (student_id-Zweig verlangt Lehrer-Login + Klassenbesitz) - licenses.php: ?admin=1 und generate nur noch fuer echten Admin; Collision-Retry mit Cap - .htaccess: .env/.sh/.sql/.bak Deny (Defense-in-Depth) Schueler-Ergebnisse (kritisch): - sim-metrics.js + .ivm-CSS in schueler.html; renderOwnRunCard-Fallback zeigt jetzt Sterne + grafische Kennzahlen fuer die 9 bisher leeren Sims - sim-metrics.js: klima final_budget als "Mio EUR" statt "EUR" (Faktor 10^6) Skalierung: - assessment.php: Zwischen-Pings (phase running/started) nicht mehr persistiert - heli: 30-s-assessmentPing entfernt (Live-Zustand laeuft ueber Heartbeat) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
50 lines
1.9 KiB
ApacheConf
50 lines
1.9 KiB
ApacheConf
# Sensible Dateien niemals ausliefern (Defense-in-Depth), auch wenn sie im
|
|
# Docroot liegen und die -f-Regel unten sie sonst direkt serviert.
|
|
<FilesMatch "^\.env">
|
|
Require all denied
|
|
</FilesMatch>
|
|
<FilesMatch "\.(sh|sql|bak)$">
|
|
Require all denied
|
|
</FilesMatch>
|
|
|
|
RewriteEngine On
|
|
# Kein RewriteBase — Apache nutzt den Request-Pfad automatisch.
|
|
# Funktioniert fuer alle Deploy-Ziele:
|
|
# localhost/geograsim/App/ (lokal, XAMPP)
|
|
# staatsgeheimnis.at/geograsim/ (Subpfad-Prod)
|
|
# geograsim.at/ (eigene Domain-Prod)
|
|
# Mit hart gesetztem RewriteBase gab es auf der eigenen Domain einen
|
|
# Endlos-Redirect-Loop (AH00124: 10 internal redirects).
|
|
|
|
# Statische Dateien direkt ausliefern
|
|
RewriteRule ^dist/ - [L]
|
|
RewriteRule ^assets/ - [L]
|
|
RewriteRule ^node_modules/ - [L]
|
|
RewriteRule ^src/ - [L]
|
|
|
|
# Bestehende Dateien/Ordner direkt ausliefern
|
|
RewriteCond %{REQUEST_FILENAME} -f
|
|
RewriteRule . - [L]
|
|
|
|
RewriteCond %{REQUEST_FILENAME} -d
|
|
RewriteRule . - [L]
|
|
|
|
# Header-Migration (N.6.2): alte .html-URLs auf umbenannte .php-Versionen umlenken.
|
|
# Greift nur, wenn .html nicht existiert UND .php-Variante vorhanden ist.
|
|
# Die obigen REQUEST_FILENAME -f / -d Regeln haben schon abgebrochen, wenn
|
|
# die .html-Datei real noch da liegt — hier kommt also nur an, was nicht (mehr) existiert.
|
|
RewriteCond %{REQUEST_FILENAME} ^(.+)\.html$
|
|
RewriteCond %1.php -f
|
|
RewriteRule ^(.+?)\.html$ $1.php [L]
|
|
|
|
# Extension-less URLs auf .php auflösen, falls .php-Datei existiert.
|
|
# Beispiel: /kontakt -> /kontakt.php (sofern kontakt.php existiert und
|
|
# kein gleichnamiger Ordner/File). Vorher hat das implizit MultiViews
|
|
# über alte .html-Files gemacht — seit der .html→.php-Migration fällt
|
|
# das weg, also brauchen wir hier eine explizite Regel.
|
|
RewriteCond %{REQUEST_FILENAME}.php -f
|
|
RewriteRule ^([^.]+)$ $1.php [L]
|
|
|
|
# Alles andere -> Front Controller
|
|
RewriteRule ^(.*)$ index.php [QSA,L]
|