# Entscheidungen – warteliste-export

Fiktives Beispielprojekt. Dauerhafte Entscheidungen mit Begründung.
Einträge nicht löschen; überholte als „ersetzt durch E-00x“ markieren.

## E-001 · Keine Abhängigkeiten

- Entscheidung: Nur Node-Bordmittel (`node:test`, `node:assert`).
- Grund: Das Modul soll ohne Installationsschritt laufen und prüfbar bleiben.
- Folge: CSV-Escaping ist selbst geschrieben und durch Tests abgedeckt.

## E-002 · Export nur mit Einwilligung

- Entscheidung: Ein Eintrag erscheint nur im Export, wenn `einwilligung === true`.
- Grund: Der Export ist für Mailings gedacht. Ohne Einwilligung soll niemand angeschrieben werden.
- Folge: Fehlt das Feld, zählt es wie `false`. Gefiltert wird vor der
  Duplikatprüfung (E-003), damit ein Eintrag ohne Einwilligung keinen
  späteren Eintrag mit Einwilligung verdrängt.

## E-003 · E-Mail-Adressen normalisieren

- Entscheidung: Adressen werden getrimmt und kleingeschrieben.
  Nach der Normalisierung gleiche Adressen gelten als Duplikat; der erste Eintrag bleibt.
- Grund: Dieselbe Person soll keine doppelte Mail erhalten.

## E-004 · CSV für einen geprüften Konsumenten (2026-10-13)

- Entscheidung: Ziel ist LibreOffice Calc 26.8.0.3 mit UTF-8, Komma als
  Separator und doppeltem Anführungszeichen als Textbegrenzer.
- Jede Zelle wird nach der bisherigen E-Mail-Normalisierung geprüft. Bei
  `=`, `+`, `-`, `@` (auch nach Leerraum), deren Vollbreitenvarianten
  sowie führendem Tab, CR oder LF wird ein Apostroph vorangestellt.
  Quotes werden verdoppelt; Komma, Quote, CR und LF werden CSV-zitiert.
- Grund: CSV-Quoting allein verhindert Formelauswertung nicht. Die Prüfung
  in Calc umfasst Standardspalten, aktive Formelauswertung und
  Speichern/Wiederöffnen als ODS sowie CSV; keine Textspalten-Voreinstellung.
- Folge: Normale CSV-Werte bleiben unverändert. Riskante Werte bleiben mit
  sichtbarem Apostroph erhalten; dieser ist Teil der Daten, kein unsichtbares
  Escape. Nicht automatisch entfernen. Calc normalisiert CR/CRLF zu LF;
  der direkte CSV-Roundtrip erhält sie dagegen exakt.
- Grenze: Keine universelle CSV-, Excel- oder andere Calc-Versionsfreigabe.
  Andere Konsumenten und Importoptionen zuerst separat prüfen. Für exakte
  Textzelltypen unabhängig vom Import eignet sich ein typisiertes Format.
  E-002 bleibt die absichtlich noch offene Übungsaufgabe.
- Quelle: https://community.owasp.org/attacks/CSV_Injection (13.10.2026).
