Changes.md erstellt, README.md und install.sh aktualisiert

This commit is contained in:
fds2610 2026-03-25 16:00:29 +01:00
parent 628e636454
commit 1fb2a96583
3 changed files with 30 additions and 33 deletions

View file

@ -1,28 +1,16 @@
# Changelog # Änderungshistorie
--- ## Unveröffentlicht
## 2026-03-25 – Sicherheit, UX-Verbesserungen & Bugfixes ### Neu
- **Session-Authentifizierung** – HTTP Basic Auth durch cookie-basierte Session-Authentifizierung ersetzt; Sessions laufen nach 24 Stunden absolut ab (kein Sliding Expiry)
- **Benutzerverwaltung** (`/useradmin`) – Benutzer anlegen, bearbeiten (Benutzername und Passwort), deaktivieren und löschen; Passwörter werden mit bcrypt gehasht gespeichert
- **Ersteinrichtungsflow** – beim ersten Start ohne Benutzer leitet die Anwendung auf `/login` weiter und ermöglicht dort das Anlegen des ersten Administrator-Accounts
- **Abmelden-Button** in der Seitenleiste
### Sicherheit ### Geändert
- **Timing-sicherer Login**: Passwort- und Benutzernamevergleich auf `hash_equals()` umgestellt (verhindert Timing-Angriffe) - `AUTH_USER` und `AUTH_PASS` entfernt – Zugangsdaten werden nun ausschließlich in der Datenbank verwaltet
- **SVG-Upload gesperrt**: Logo-Upload akzeptiert nur noch PNG und JPEG – SVG wurde entfernt (XSS-Risiko) - Neue Datenbanktabelle `users` (Migration `005_users.sql`) erforderlich
- **CSV-Injection-Schutz**: Felder im Buchungsjournal-CSV-Export werden gegen Formula-Injection (`=`, `+`, `-`, `@`) abgesichert
### Features ### Behoben
- **Inline-Editing**: Belegdatum und Rechnungsnr. können direkt in der Beleg-Detailansicht per Klick bearbeitet werden (kein Seitenreload) - Fehler in `BelegController` behoben
- **Belegart-Filter**: Neue Filteroption in der Belegliste zum Filtern nach Belegart (Eingangsrechnung, Ausgangsrechnung, Quittung etc.)
- **Favicon & App-Icon**: Favicon für Browser-Tabs, Apple Touch Icon und Web-App-Manifest eingebunden
### Robustheit
- **Datenbankfehler-Handling**: PDO-Exceptions in Invoice-, Booking- und BelegController werden separat abgefangen und geloggt statt als generische Fehler zu erscheinen
---
## 2026-03-24 – Initiales Release
### Features
- **Basis-System**: MVC-Framework, Routing, Authentifizierung, Datenbank-Migrations-System
- **Ausgangsrechnungen**: Erstellen, Verwalten und PDF-Export von Ausgangsrechnungen
- **EÜR-Vorbereitung**: Einnahmen-Überschuss-Rechnung als PDF-Export
- **UStVA-Vorbereitung**: Umsatzsteuer-Voranmeldung inkl. XML-Export für elster.de

View file

@ -12,6 +12,7 @@ Self-hosted Buchhaltungs- und Steueranwendung für deutsche Freiberufler und Kle
- **UStVA** – Kennzahlen-Berechnung aus Buchungen, ELSTER XML-Export - **UStVA** – Kennzahlen-Berechnung aus Buchungen, ELSTER XML-Export
- **EÜR** – Jahresauswertung mit PDF-Export - **EÜR** – Jahresauswertung mit PDF-Export
- **Einstellungen** – Firmendaten, Logo, ELSTER-Steuernummer - **Einstellungen** – Firmendaten, Logo, ELSTER-Steuernummer
- **Benutzerverwaltung** – Benutzer anlegen, bearbeiten, deaktivieren und löschen; session-basierte Authentifizierung mit 24 h Timeout
## Tech Stack ## Tech Stack
@ -70,18 +71,20 @@ git clone <repository-url> steuerkram
cd steuerkram cd steuerkram
``` ```
#### 2. Zugangsdaten anpassen #### 2. Konfiguration anpassen
Öffne `docker-compose.yml` und ändere die folgenden Umgebungsvariablen im `web`-Service: Kopiere `.env.example` nach `.env` und passe die Werte an:
```yaml ```bash
environment: cp .env.example .env
AUTH_USER: admin # Login-Benutzername
AUTH_PASS: changeme # Login-Passwort – UNBEDINGT ändern!
APP_SECRET: change-this-in-production # Zufälligen langen String eintragen
``` ```
Außerdem die Datenbankpasswörter in beiden Services (`web` und `db`) aufeinander abstimmen, falls gewünscht. ```dotenv
DB_PASS=sicheres-passwort # Datenbankpasswort – in docker-compose.yml spiegeln
APP_SECRET=zufaelliger-string # Zufälligen langen String eintragen (für Sessions)
```
Außerdem in `docker-compose.yml` das `MARIADB_PASSWORD` im `db`-Service auf denselben Wert wie `DB_PASS` setzen.
#### 3. Container starten #### 3. Container starten
@ -100,7 +103,9 @@ Beim ersten Start werden automatisch:
http://localhost:8080 http://localhost:8080
``` ```
Login mit den in Schritt 2 gesetzten Zugangsdaten. Beim ersten Aufruf erscheint die **Ersteinrichtung**: dort den ersten Benutzer-Account anlegen. Danach ist die Anwendung passwortgeschützt.
Weitere Benutzer können nach dem Login unter **Benutzer** in der Seitenleiste verwaltet werden.
#### 5. Firmendaten hinterlegen #### 5. Firmendaten hinterlegen

View file

@ -289,3 +289,7 @@ echo ""
echo " Danach die Anwendung starten:" echo " Danach die Anwendung starten:"
echo -e " ${BOLD}cd ${INSTALL_DIR} && docker compose up -d${NC}" echo -e " ${BOLD}cd ${INSTALL_DIR} && docker compose up -d${NC}"
echo "" echo ""
echo -e "${YELLOW}${BOLD}Erster Login:${NC}"
echo " Beim ersten Aufruf der Anwendung im Browser wird automatisch"
echo " die Ersteinrichtung angezeigt – dort den ersten Benutzer anlegen."
echo ""