security: MIT-Lizenz, .gitignore härten, Fail-Fast für SESSION_SECRET

- LICENSE: MIT-Lizenz (bereits vorhanden, korrekt)
- package.json: "license": "MIT" ergänzt
- README.md: Lizenz-Badge auf MIT aktualisiert, Lizenz-Sektion angepasst
- .gitignore: .claude/ und *.txt hinzugefügt (verhindert versehentliches
  Committen von Claude Code Einstellungen und Token-Textdateien)
- server/auth.js: Fail-Fast in Produktion wenn SESSION_SECRET fehlt;
  Fallback-String auf 'dev-only-secret-not-for-production' umbenannt
  (klarere Intention, kein bekannter Produktions-Wert im Public Repo)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ulsklyc
2026-03-24 23:01:08 +01:00
parent 72d6d5126e
commit 0dac77773a
4 changed files with 14 additions and 3 deletions
+6
View File
@@ -26,3 +26,9 @@ dist/
.idea/
*.swp
*.swo
# Claude Code (enthält lokale Berechtigungen und ggf. Tokens)
.claude/
# Textdateien mit Tokens/Keys (Sicherheitsnetz)
*.txt
+2 -2
View File
@@ -8,7 +8,7 @@
[![Docker](https://img.shields.io/badge/Docker-ready-2496ED?logo=docker&logoColor=white)](https://www.docker.com)
[![SQLite](https://img.shields.io/badge/SQLite-SQLCipher%20verschlüsselt-003B57?logo=sqlite&logoColor=white)](https://www.zetetic.net/sqlcipher/)
[![PWA](https://img.shields.io/badge/PWA-offline--fähig-5A0FC8?logo=pwa&logoColor=white)](https://web.dev/progressive-web-apps/)
[![Lizenz](https://img.shields.io/badge/Lizenz-privat-lightgrey)](./LICENSE)
[![Lizenz: MIT](https://img.shields.io/badge/Lizenz-MIT-yellow.svg)](./LICENSE)
Alle Daten bleiben auf deinem eigenen Server.
Kein Cloud-Zwang. Keine Datenweitergabe. Kein Tracking.
@@ -284,4 +284,4 @@ docker compose up -d
## Lizenz
Privates Projekt — nicht für den öffentlichen Einsatz lizenziert.
[MIT](./LICENSE) © 2025 ulsklyc
+1
View File
@@ -31,6 +31,7 @@
"googleapis": "^144.0.0",
"tsdav": "^2.0.10"
},
"license": "MIT",
"engines": {
"node": ">=20.0.0"
}
+5 -1
View File
@@ -31,9 +31,13 @@ const sessionStore = new SQLiteStore({
* Session-Middleware konfigurieren.
* Wird in server/index.js eingebunden.
*/
if (process.env.NODE_ENV === 'production' && !process.env.SESSION_SECRET) {
throw new Error('[Auth] SESSION_SECRET muss in der .env gesetzt sein (Produktion).');
}
const sessionMiddleware = session({
store: sessionStore,
secret: process.env.SESSION_SECRET || 'dev-secret-AENDERN-IN-PRODUKTION',
secret: process.env.SESSION_SECRET || 'dev-only-secret-not-for-production',
resave: false,
saveUninitialized: false,
name: 'oikos.sid',