docs(security): document localStorage privacy + note ID fallback (#8)
- README gains a "Datenschutz & Speicherung" section: local single-user tool, unencrypted localStorage, avoid shared devices, export JSON to back up. - Comments the generateId Math.random fallback as a non-crypto last resort, acceptable for local employee ids. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
e6452fa102
commit
074635c037
2 files changed
+14
No files matched your search
@@ -25,3 +25,15 @@ Die App läuft auf **http://localhost:3001**.
|
||||
```bash
|
||||
npm test
|
||||
```
|
||||
|
||||
## Datenschutz & Speicherung
|
||||
|
||||
Diese App ist ein **lokales Single-User-Werkzeug**: Alle Daten (Mitarbeiternamen,
|
||||
Urlaube, Pläne, Verlauf) werden ausschließlich **im Browser** (`localStorage`)
|
||||
gespeichert. Es gibt keinen Server und keine Übertragung an Dritte. Die Daten
|
||||
liegen **unverschlüsselt** vor und sind für jeden zugänglich, der Zugriff auf
|
||||
dasselbe Browser-Profil hat.
|
||||
|
||||
- App **nicht auf geteilten/öffentlichen Geräten** für sensible Daten nutzen.
|
||||
- Datenstand regelmäßig über **JSON-Export** (Tab „Daten") sichern.
|
||||
- Beim Leeren der Browserdaten gehen alle nicht exportierten Daten verloren.
|
||||
@@ -10,6 +10,8 @@ function generateId() {
|
||||
const h = [...b].map(x => x.toString(16).padStart(2, '0'));
|
||||
return `${h.slice(0,4).join('')}-${h.slice(4,6).join('')}-${h.slice(6,8).join('')}-${h.slice(8,10).join('')}-${h.slice(10,16).join('')}`;
|
||||
}
|
||||
// Last-resort fallback for environments without Web Crypto. Not cryptographically
|
||||
// strong, but adequate for local, non-security-sensitive employee ids.
|
||||
return Date.now().toString(36) + Math.random().toString(36).slice(2, 10);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user