> ./exec Web_dev.sh — GUIDE

DSGVO-konforme Website: Checkliste für den Mittelstand

Léa — Frontend Engineer LéaFrance · Frontend Engineer 09-07-2026 7 min Lesezeit WEB-DEV

Ein DSGVO-Bußgeld beginnt bei 2 % des weltweiten Jahresumsatzes. Für ein Unternehmen mit 5 Mio. EUR Jahresumsatz sind das 100.000 EUR Mindestrahmen. Die überraschend häufige Ursache ist keine ausgefeilte Datenpanne, sondern ein Standard-Website-Baustein: eine extern geladene Schrift, ein Cookie-Banner ohne echte Opt-in-Logik, ein Kontaktformular ohne Art.-13-Hinweis.

Dieser Leitfaden enthält acht Checkpoints, die sich direkt im Code oder in der Server-Konfiguration prüfen lassen. Jeder Abschnitt nennt konkret, was zu messen ist und welches Tool den Status sichtbar macht.


Checkpoint 1: HTTPS und TLS 1.3

Art. 32 DSGVO verlangt "geeignete technische Maßnahmen" zum Schutz personenbezogener Daten. Eine unverschlüsselte HTTP-Verbindung erfüllt dieses Kriterium nicht.[1] TLS 1.0 und 1.1 gelten seit 2021 als veraltet und dürfen nicht mehr eingesetzt werden. Das BSI empfiehlt TLS 1.3 mit modernen ECDHE-Cipher-Suites und schließt SHA-1-Zertifikate ausdrücklich aus.[4]

Minimale Nginx-Konfiguration:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384';
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

Validierung: Der SSL Labs Server Test liefert Note A+, wenn HSTS und TLS 1.3 korrekt konfiguriert sind. Alternativ genügt curl -I https://ihre-domain.de und ein Blick auf den Strict-Transport-Security-Header in der Antwort.


Die Konferenz der Datenschutzaufsichtsbehörden (DSK) hat in ihrer Orientierungshilfe Telemedien klargestellt: Cookies, die nicht technisch notwendig sind, dürfen erst nach einer aktiven, informierten Einwilligung gesetzt werden. Vorab angehakte Checkboxen, ein "OK"-Button ohne gleichwertige "Ablehnen"-Option oder versteckte Opt-out-Links genügen den Anforderungen nicht.[2]

Was das technisch bedeutet: Drittanbieter-Skripte dürfen erst nach dem Consent-Event ins DOM eingefügt werden.

// Skripte erst NACH Einwilligung laden
function loadAnalytics() {
  const script = document.createElement('script');
  script.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXXX';
  script.async = true;
  document.head.appendChild(script);
}

document.addEventListener('consent:analytics', loadAnalytics);

Ein Consent Manager (Usercentrics, Cookiebot, Borlabs Cookie) setzt dieses Event-Muster automatisch um. Kritischer Punkt: Der Consent Manager selbst darf vor der Nutzerentscheidung keine Tracking-Cookies setzen. Das klingt trivial, ist aber ein häufiger Konfigurationsfehler bei günstigen Implementierungen.

Lighthouse-Check: Unter "Third-party resources" im Lighthouse-Report und im Network-Tab von Chrome DevTools ist sichtbar, wie viele Requests beim allerersten Seitenaufruf feuern. Jedes externe Skript vor dem Consent-Event ist ein potenzieller Verstoß.


Checkpoint 3: Google Fonts lokal einbinden

Das Landgericht München I hat im Januar 2022 entschieden: Das automatische Übermitteln der Besucher-IP-Adresse an Google beim Laden von Fonts vom Google-CDN verstößt gegen die DSGVO.[3] Die technische Lösung ist unkompliziert. Das Tool google-webfonts-helper stellt die WOFF2-Dateien zur lokalen Auslieferung bereit.

/* styles/fonts.css */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/inter-v13-latin-regular.woff2') format('woff2');
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/inter-v13-latin-700.woff2') format('woff2');
}

font-display: swap ist hier kein optionales Detail. Es verhindert FOIT (Flash of Invisible Text) und verbessert den LCP-Wert messbar. In eigenen Tests: LCP-Reduktion um 0,3 bis 0,8 Sekunden nach dem Wechsel von Google CDN auf lokale Font-Auslieferung.[5]


Checkpoint 4: Kontaktformulare und Informationspflicht

Jedes Formular, das personenbezogene Daten erfasst, muss unmittelbar vor dem Absenden auf die Datenschutzerklärung hinweisen. Die Information muss sichtbar sein, bevor der Nutzer absendet, nicht nur in einem verlinkten Dokument.[1]

<p class="form-privacy-hint">
  Mit dem Absenden stimmen Sie der Verarbeitung Ihrer Angaben
  zur Bearbeitung Ihrer Anfrage zu.
  Weitere Informationen: <a href="/datenschutz">Datenschutzerklärung</a>.
</p>

Das Prinzip der Datenminimierung nach Art. 5 Abs. 1 lit. c DSGVO gilt für die Feldstruktur: Ein Kontaktformular benötigt Name und E-Mail-Adresse. Telefonnummer und Unternehmensname sind als optionale Felder zu markieren.[1] Pflichtfelder, die für den Formularweck nicht zwingend notwendig sind, erhöhen das Compliance-Risiko.


Checkpoint 5: Auftragsverarbeitungsverträge (AVV)

Jeder externe Dienstleister, der personenbezogene Daten im Auftrag verarbeitet, benötigt einen Auftragsverarbeitungsvertrag (AVV). Das betrifft nicht nur den Hosting-Provider, sondern sämtliche Tools, die Besucher- oder Kundendaten berühren:

  • Hosting-Provider (Hetzner, IONOS, AWS, Azure)
  • E-Mail-Dienstleister (Mailchimp, Brevo, Microsoft 365)
  • Analytics-Dienste (Google Analytics 4, Matomo Cloud, Hotjar)
  • Formular-Dienste (Formspree, HubSpot, Typeform)
  • CDN-Provider (Cloudflare, Fastly, Akamai)

Die meisten großen Anbieter stellen standardisierte AVV-Vorlagen im Kundenportal bereit. Fehlende oder abgelaufene AVV gehören zu den häufigsten Befunden bei DSGVO-Audits. Eine einfache Tabelle mit Dienstleister, Verarbeitungszweck, AVV-Status und letztem Prüfdatum reicht als Mindestdokumentation aus.


Checkpoint 6: Content Security Policy Header

Ein CSP-Header begrenzt, welche Ressourcen der Browser laden und wohin er Daten senden darf. Er ist keine optionale Sicherheitshärtung, sondern eine technische Maßnahme im Sinne von Art. 32 DSGVO, die unautorisierten Datentransfer an Dritte verhindert.

Strenger Basis-Header für Nginx:

add_header Content-Security-Policy "
  default-src 'self';
  script-src  'self';
  style-src   'self' 'unsafe-inline';
  font-src    'self';
  img-src     'self' data:;
  connect-src 'self';
  frame-ancestors 'none';
" always;

Nach dem Umstieg auf lokale Fonts und eigene Asset-Auslieferung lässt sich font-src auf 'self' beschränken. Jede zusätzliche Domain in den Direktiven ist ein potenzieller externer Datenpunkt. Der Chrome DevTools Security-Tab zeigt CSP-Verstöße direkt in der Konsole.

Benchmark: Ein vollständiger CSP-Header mit default-src 'self' blockiert auf einer typischen Marketing-Website durchschnittlich 8 bis 14 Third-Party-Requests beim Erstaufruf.


Checkpoint 7: Server-Logs und IP-Anonymisierung

Web-Server-Logs enthalten standardmäßig vollständige IPv4- und IPv6-Adressen. Eine vollständige IP-Adresse ist ein personenbezogenes Datum. Ohne Rechtsgrundlage oder Anonymisierung verstößt die Speicherung gegen Art. 5 DSGVO.[1]

Nginx-Konfiguration mit IP-Anonymisierung über map:

map $remote_addr $remote_addr_anon {
  ~(?P<ip>\d+\.\d+\.\d+)\.\d+$  $ip.0;
  ~(?P<ip>[^:]+:[^:]+):          $ip::;
  default                        0.0.0.0;
}

log_format anonymized '$remote_addr_anon - $remote_user [$time_local] '
                       '"$request" $status $body_bytes_sent';

access_log /var/log/nginx/access.log anonymized;

Ergänzend empfiehlt sich eine Logrotation auf maximal 7 Tage (logrotate mit rotate 1 und daily). Für Debugging-Zwecke reicht in der Praxis ein Zeitfenster von 48 Stunden. Längere Aufbewahrung erfordert eine explizite Rechtsgrundlage und eine Eintragung im Verarbeitungsverzeichnis.


Checkpoint 8: Lighthouse als DSGVO-Frühwarnsystem

Lighthouse misst keine DSGVO-Konformität im juristischen Sinne, aber Third-Party-Requests im Lighthouse-Report korrelieren direkt mit dem Risikoprofil einer Website. Jedes externe Skript, jede CDN-Schrift, jedes Tracking-Pixel ist ein Datentransfer an Dritte.

Zielwerte für eine DSGVO-konforme Website mit soliden Core Web Vitals:[5]

Metrik Zielwert Messwerkzeug
LCP (Largest Contentful Paint) unter 2,5 s Lighthouse, CrUX
INP (Interaction to Next Paint) unter 200 ms Chrome DevTools Performance
CLS (Cumulative Layout Shift) unter 0,1 Lighthouse
Third-Party-Requests (Erstaufruf) 0 Network-Tab
Third-Party-Bytes (Erstaufruf) 0 KB Network-Tab

Beim ersten Seitenaufruf, vor jeder Nutzerinteraktion, sollten Third-Party-Requests auf null reduziert sein. Das ist das technische Korrelat zur Einwilligungspflicht.[5]

CLI-Aufruf für automatisierte Checks in der CI/CD-Pipeline:

npx lighthouse https://ihre-domain.de \
  --only-categories=performance \
  --output=json \
  --output-path=./lighthouse-report.json

Integrieren Sie diesen Schritt in jeden Deployment-Lauf. Neue Third-Party-Requests fallen so auf, bevor sie in Produktion gehen.


Audit-Rhythmus

Eine einmalige DSGVO-Prüfung reicht nicht. Jedes Dependency-Update, jedes neue Plugin, jede zusätzliche Tracking-Integration kann den Compliance-Status verändern. Empfohlener Rhythmus:

  • Monatlich: Lighthouse-Scan der Startseite und der wichtigsten Landing Pages, Abgleich Third-Party-Requests vor und nach Consent
  • Quartalsweise: Vollständige Überprüfung aller Drittanbieter gegen die AVV-Liste mit Prüfdatum
  • Bei jedem Release: CSP-Header-Test in der Staging-Umgebung, Network-Tab-Überprüfung beim Erstaufruf
  • Jährlich: Vollständiger DSGVO-Audit aller Verarbeitungstätigkeiten inklusive Verarbeitungsverzeichnis

Der Aufwand für monatliche Scans liegt bei unter 30 Minuten, wenn die Lighthouse-CI-Integration einmal eingerichtet ist. Ein Bußgeldbescheid kostet erheblich mehr, in Zeit und in Euro.


Quellen

[1] Europäisches Parlament und Rat der Europäischen Union, Verordnung (EU) 2016/679 zum Schutz natürlicher Personen bei der Verarbeitung personenbezogener Daten (Datenschutz-Grundverordnung), Amtsblatt der Europäischen Union L 119, 4. Mai 2016, S. 1–88. https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX%3A32016R0679

[2] Konferenz der unabhängigen Datenschutzaufsichtsbehörden des Bundes und der Länder (DSK), Orientierungshilfe der Aufsichtsbehörden für Anbieter von Telemedien ab dem 1. Dezember 2021, Version 1.1, März 2022. https://www.datenschutzkonferenz-online.de/media/oh/20220405_oh_telemedien.pdf

[3] Landgericht München I, Urteil vom 20. Januar 2022, Aktenzeichen 3 O 17493/20, zur Übermittlung von IP-Adressen an Google LLC durch Einbindung von Google Fonts per CDN.

[4] Bundesamt für Sicherheit in der Informationstechnik (BSI), Technische Richtlinie BSI TR-02102-2: Kryptographische Verfahren, Empfehlungen und Schlüssellängen, Teil 2: Verwendung von Transport Layer Security (TLS), Version 2024-01. https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102-2.html

[5] Google LLC, Core Web Vitals, Referenzdokumentation zu LCP, INP und CLS, web.dev/vitals, abgerufen am 9. Juli 2026. https://web.dev/vitals/

Léa — Frontend Engineer

LéaFrance

Frontend Engineer

Frontend-Architektur, Performance, wiederverwendbare Komponenten, Animationen.

Brauchen Sie Hilfe bei Web & Dev?

Kostenlose Erstberatung, Festpreis nach Audit.

INIT_CONSULTATION() →