docs: README dompurify note; fix: sanitize plaintext names in booking emails; feat: use sanitizePhone in email templates; feat: extend sanitizeHtml allowed tags and URL allowlist
This commit is contained in:
44
README.md
44
README.md
@@ -12,6 +12,8 @@ Ein vollständiges Buchungssystem für Nagelstudios mit Admin-Panel, Kalender un
|
||||
- [Hono](https://hono.dev/)
|
||||
- [Zod](https://zod.dev/)
|
||||
|
||||
> Hinweis zu DOMPurify: Wir nutzen `isomorphic-dompurify`, das DOMPurify bereits mitliefert und sowohl in Node.js als auch im Browser funktioniert. Eine zusätzliche Installation von `dompurify` ist daher nicht erforderlich und würde eine redundante Abhängigkeit erzeugen.
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Umgebungsvariablen konfigurieren
|
||||
@@ -22,33 +24,28 @@ Kopiere die `.env.example` Datei zu `.env` und konfiguriere deine Umgebungsvaria
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
### 2. Admin-Passwort Hash generieren
|
||||
### 2. Admin-Passwort Hash generieren (bcrypt)
|
||||
|
||||
Das Admin-Passwort wird als Base64-Hash in der `.env` Datei gespeichert. Hier sind verschiedene Methoden, um einen Hash zu generieren:
|
||||
Das Admin-Passwort wird als bcrypt-Hash in der `.env` Datei gespeichert. So erzeugst du einen Hash:
|
||||
|
||||
#### PowerShell (Windows)
|
||||
```powershell
|
||||
# Einfache Methode mit Base64-Encoding
|
||||
$password = "dein_sicheres_passwort"
|
||||
$bytes = [System.Text.Encoding]::UTF8.GetBytes($password)
|
||||
$hash = [System.Convert]::ToBase64String($bytes)
|
||||
Write-Host "Password Hash: $hash"
|
||||
|
||||
# Alternative mit PowerShell 7+ (kürzer)
|
||||
$password = "dein_sicheres_passwort"
|
||||
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($password))
|
||||
#### Node.js (empfohlen)
|
||||
```bash
|
||||
node -e "require('bcrypt').hash('dein_sicheres_passwort', 10).then(console.log)"
|
||||
```
|
||||
|
||||
#### Node.js (falls verfügbar)
|
||||
Alternativ kannst du ein kleines Script verwenden (falls du es öfter brauchst):
|
||||
|
||||
```javascript
|
||||
// In der Node.js Konsole oder als separates Script
|
||||
const password = "dein_sicheres_passwort";
|
||||
const hash = Buffer.from(password).toString('base64');
|
||||
console.log("Password Hash:", hash);
|
||||
// scripts/generate-hash.js
|
||||
require('bcrypt').hash(process.argv[2] || 'dein_sicheres_passwort', 10).then(h => {
|
||||
console.log(h);
|
||||
});
|
||||
```
|
||||
|
||||
#### Online-Tools (nur für Entwicklung)
|
||||
- Verwende einen Base64-Encoder wie [base64encode.org](https://www.base64encode.org/)
|
||||
Ausführen:
|
||||
```bash
|
||||
node scripts/generate-hash.js "dein_sicheres_passwort"
|
||||
```
|
||||
|
||||
### 3. .env Datei konfigurieren
|
||||
|
||||
@@ -57,7 +54,8 @@ Bearbeite deine `.env` Datei und setze die generierten Werte:
|
||||
```env
|
||||
# Admin Account Configuration
|
||||
ADMIN_USERNAME=owner
|
||||
ADMIN_PASSWORD_HASH=ZGVpbl9zaWNoZXJlc19wYXNzd29ydA== # Dein generierter Hash
|
||||
# bcrypt-Hash des Admin-Passworts (kein Base64). Beispielwert:
|
||||
ADMIN_PASSWORD_HASH=$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
|
||||
|
||||
# Domain Configuration
|
||||
DOMAIN=localhost:5173 # Für Produktion: deine-domain.de
|
||||
@@ -209,10 +207,12 @@ Nach dem Setup kannst du dich mit den in der `.env` konfigurierten Admin-Credent
|
||||
|
||||
⚠️ **Wichtige Hinweise:**
|
||||
- Ändere das Standard-Passwort vor dem Produktionseinsatz
|
||||
- Das Passwort wird als Base64-Hash in der `.env` Datei gespeichert
|
||||
- Das Passwort wird als bcrypt-Hash in der `.env` Datei gespeichert
|
||||
- Verwende ein sicheres Passwort und generiere den entsprechenden Hash
|
||||
- Die `.env` Datei sollte niemals in das Repository committet werden
|
||||
|
||||
Hinweis zur Migration: Vorhandene Base64-Hashes aus älteren Versionen werden beim Server-Start automatisch in bcrypt migriert. Zusätzlich erfolgt beim nächsten erfolgreichen Login ebenfalls eine Migration, falls noch erforderlich.
|
||||
|
||||
### Security.txt Endpoint
|
||||
|
||||
Die Anwendung bietet einen RFC 9116 konformen Security.txt Endpoint unter `/.well-known/security.txt`:
|
||||
|
Reference in New Issue
Block a user