Erste Abarbeitung des Repository-Audits (siehe TODO.md). Sicherheit: - Rate-Limiting für alle vier Auth-Endpunkte. Sie waren unbegrenzt aufrufbar, also beliebig viele Mails über den eigenen SMTP-Zugang und beliebig viele Rateversuche auf Verifizierungscodes. - Passwort-Reset-Token nur noch als SHA-256-Hash in der Datenbank. Bisher Klartext: Lesezugriff auf die DB genuegte zur Kontouebernahme. - Tote Mock-Login-Route entfernt. Sie verglich gegen ein hartcodiertes Fake-Passwort und war ueber die Middleware-Ausnahme fuer /api/auth/* ohne Anmeldung erreichbar. - Passwort-Reset auf bcrypt-Kosten 12, wie beim Signup. Reparaturen: - npm test rief jest auf, obwohl es weder Jest-Config noch Jest-Tests gibt. Zeigt jetzt auf Playwright; jest/ts-jest/@types/jest entfernt. - Falscher sonar.projectKey im Workflow. Verifiziert per tsc gegen die geaenderten Bereiche: keine neuen Typfehler. v1.117.0 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
45 lines
1.2 KiB
Bash
45 lines
1.2 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Wiederkehrende Qualitäts- und Sicherheitsprüfung.
|
|
#
|
|
# Gedacht für den nächtlichen Lauf auf dem Spark (todo-sonar.timer), kann aber jederzeit
|
|
# von Hand gestartet werden: bash scripts/quality-check.sh
|
|
#
|
|
# Bewusst NICHT auf dem Produktionscontainer: LXC 202 hat 2 Kerne und bedient Live-Verkehr,
|
|
# und ein Scan zur Deploy-Zeit findet Probleme erst, nachdem sie ausgeliefert wurden.
|
|
|
|
main() {
|
|
set -uo pipefail # kein -e: jede Prüfung soll laufen, auch wenn eine vorher meckert
|
|
|
|
local FAILED=0
|
|
step() { echo; echo "=== $1 ==="; }
|
|
|
|
cd "$(dirname "$0")/.."
|
|
|
|
step "Abhängigkeiten auf bekannte Sicherheitslücken"
|
|
npm audit --audit-level=high || FAILED=1
|
|
|
|
step "TypeScript"
|
|
npm run type-check || FAILED=1
|
|
|
|
step "ESLint"
|
|
npm run lint || FAILED=1
|
|
|
|
step "SonarQube"
|
|
if command -v todo-sonar-scan >/dev/null; then
|
|
todo-sonar-scan || FAILED=1
|
|
else
|
|
echo "todo-sonar-scan nicht gefunden — übersprungen"
|
|
fi
|
|
|
|
echo
|
|
if [ "$FAILED" -eq 0 ]; then
|
|
echo "=== Alle Prüfungen bestanden ==="
|
|
else
|
|
echo "=== Mindestens eine Prüfung hat angeschlagen (siehe oben) ==="
|
|
fi
|
|
return "$FAILED"
|
|
}
|
|
|
|
main "$@"
|