Deutsch | English Header-Test API Über WebForensik

WebForensik

Ergebnisse für https://digitaler-pflegeantrag.de/

Analysezeitpunkt: 2026-08-13 11:05:34

84

Gesamtbewertung

DSGVO-Zusammenfassung

⚠ Diese Website weist schwerwiegende DSGVO-Mängel auf. Es besteht dringender Handlungsbedarf.

DSGVO-Probleme erkannt (2):

❌ 2 Drittanbieter-Server außerhalb der EU/des EWR — Datenübermittlung ohne Rechtsgrundlage kann gegen Art. 44–49 DSGVO verstoßen.

Betroffene Server außerhalb der EU:

  • stats.g.doubleclick.net (United States)
  • www.google.com (United States)

❌ 1 Tracking-Dienst(e) erkannt — ohne vorherige Einwilligung (Opt-in) ein Verstoß gegen Art. 6 Abs. 1 DSGVO und § 25 TDDDG.

Erkannte Tracker:

  • Google (Content)

Hinweis: Diese automatisierte Analyse ersetzt keine rechtliche Beratung. Für eine vollständige DSGVO-Bewertung konsultieren Sie einen Datenschutzbeauftragten.

↓ Detaillierte Ergebnisse zu allen Kategorien finden Sie weiter unten.

Anzeigen:
100 HTTPS / Verschlüsselung

Die Website nutzt eine verschlüsselte Verbindung (HTTPS).

Neueste Verschlüsselung aktiv (TLS 1.3 — TLSv1.3).

Das Sicherheitszertifikat ist gültig (läuft ab am 2026-10-06).

Starke Verschlüsselungsmethode (TLS_AES_256_GCM_SHA384, 256 Bit).

60 Erzwungene Verschlüsselung (HSTS)

HSTS ist aktiviert — der Browser wird angewiesen, immer die verschlüsselte Verbindung zu nutzen.

HSTS-Dauer: nur 2592000 Sekunden — zu kurz. Mindestens 180 Tage empfohlen.

☛ Handlungsbedarf: Der HSTS-Zeitraum ist zu kurz. Erhöhen Sie max-age auf mindestens 15552000 (180 Tage), besser 31536000 (1 Jahr).
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Ihr HSTS-Zeitraum ist zu kurz (nur 2592000 Sekunden) — Browser „vergessen" die HTTPS-Pflicht schnell wieder. Empfohlen: mindestens 180 Tage (15552000 Sekunden), besser 1 Jahr (31536000).

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: .htaccess im Web-Root

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

⚠ Falls bereits ein anderer Header-set für Strict-Transport-Security existiert, diesen ersetzen (nicht zusätzlich einfügen, sonst wird der erste verworfen).

WordPress Spezial für WordPress: so tragen Sie es ein

Weg 1: per .htaccess (empfohlen — kein Theme bearbeiten)

Datei: .htaccess im WordPress-Root

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

⚠ Vorhandenen HSTS-Eintrag im .htaccess durch diese Zeile ersetzen.

✓ So prüfen Sie, ob es funktioniert: curl -I https://ihre-domain.de | grep -i strict — der max-age-Wert muss mindestens 15552000 sein.

HSTS gilt auch für alle Subdomains (includeSubDomains).

↓ KOMPLETT-LÖSUNG ANZEIGEN Alle fehlenden Security-Header zusammen am Ende des Reports — fertig zum Kopieren.
45 Content Security Policy (CSP)

Content Security Policy vorhanden (via HTTP-Header).

Skript-Quellen sind zu weit gefasst (Wildcard, http: etc.) — praktisch kein Schutz.

☛ Handlungsbedarf: Ihre CSP erlaubt Skripte von beliebigen Quellen — das ist praktisch kein Schutz. Schränken Sie die erlaubten Skript-Quellen auf konkrete Domains ein.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Ihre script-src-Quellen sind so weit gefasst (Wildcard *, http:, …), dass praktisch jeder Code geladen werden darf — die Schutzwirkung ist gleich null. Sie müssen die erlaubten Domains konkret auflisten.

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: .htaccess im Web-Root

<IfModule mod_headers.c>
    Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.googletagmanager.com https://www.google-analytics.com; font-src 'self' https: data:; object-src 'none'; frame-ancestors 'self'; base-uri 'self'"
</IfModule>

⚠ Listen Sie HINTER „script-src 'self'" nur die Domains, die Sie wirklich brauchen. Schritt-für-Schritt-Methode: alle Wildcards entfernen, Seite laden, F12-Konsole zeigt blockierte Domain → ergänzen → wiederholen. Die übrigen Direktiven (img-src data:, style-src 'unsafe-inline') sind bewusst tolerant gehalten, damit WordPress-Emoji, Admin-Bar und Plugin-Inline-Styles nicht zerschossen werden.

WordPress Spezial für WordPress: so tragen Sie es ein

Weg 1: per .htaccess (empfohlen — kein Theme bearbeiten)

Datei: .htaccess im WordPress-Root

<IfModule mod_headers.c>
    Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.googletagmanager.com; font-src 'self' https: data:; object-src 'none'; frame-ancestors 'self'; base-uri 'self'"
</IfModule>

⚠ Domains nach „script-src 'self'" je nach Bedarf erweitern (jeweils mit Leerzeichen getrennt, https:// vorangestellt). WICHTIG: img-src data: und style-src 'unsafe-inline' MÜSSEN drinbleiben, sonst zerschießt es WordPress-Emoji, Admin-Bar-Icons und alle Plugin-Inline-Styles.

✓ So prüfen Sie, ob es funktioniert: F12 → Konsole. Wenn etwas geblockt wird, steht dort „Refused to load the script ‚https://…‘" — diese URL identifizieren, die Domain in script-src ergänzen, neu laden.

Einbettungsschutz (frame-ancestors) ist konfiguriert — schützt vor Clickjacking.

Gute Grundregel: Nur eigene Inhalte sind standardmäßig erlaubt (default-src: self).

↓ KOMPLETT-LÖSUNG ANZEIGEN Alle fehlenden Security-Header zusammen am Ende des Reports — fertig zum Kopieren.
100 Referrer-Policy

Referrer-Policy: strict-origin-when-cross-origin (via HTTP-Header).

Sichere Einstellung „strict-origin-when-cross-origin" — kein Pfad-Leak, kein HTTP-Downgrade-Leak. Bestmöglich.

100 MIME-Typ-Schutz

MIME-Typ-Schutz aktiv (nosniff) — Browser interpretieren Dateien nicht falsch.

100 Clickjacking-Schutz

Clickjacking-Schutz aktiv über CSP frame-ancestors.

100 Berechtigungen (Kamera, Mikrofon etc.)

Permissions-Policy ist konfiguriert — Zugriff auf sensible Geräte-APIs wird kontrolliert.

6 von 6 sensiblen APIs eingeschränkt — sehr gut.

100 Cookies

2 Erstanbieter- und 0 Drittanbieter-Cookie(s).

Erstanbieter

Name Domain Verschlüsselt Nur Server SameSite
cfzs_google-analytics_v4 .digitaler-pflegeantrag.de Ja Ja Lax
cfz_google-analytics_v4 .digitaler-pflegeantrag.de Ja Ja Lax
100 Lokaler Speicher (Web Storage)

Kein lokaler Speicher (Web Storage) genutzt — kein Tracking-Risiko.

50 Drittanbieter-Anfragen

5 Anfrage(n) an 4 verschiedene Drittanbieter-Server.

2 Drittanbieter-Server außerhalb der EU/des EWR — potenziell problematisch für die DSGVO.

☛ Handlungsbedarf: DSGVO-VERSTOSS MÖGLICH: Daten Ihrer Besucher werden an Server außerhalb der EU/des EWR übertragen. Seit dem Schrems-II-Urteil ist das nur mit besonderen Schutzmaßnahmen zulässig. Lösungen: (1) Wechseln Sie zu EU-basierten Alternativen (z.B. Matomo statt Google Analytics, Bunny Fonts statt Google Fonts). (2) Falls nicht möglich: Stellen Sie sicher, dass Standardvertragsklauseln (SCC) und zusätzliche technische Maßnahmen vorhanden sind. (3) Holen Sie eine ausdrückliche Einwilligung der Besucher ein, BEVOR Daten übertragen werden.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

DSGVO-relevant: Daten Ihrer Besucher (mindestens IP-Adresse + User-Agent) werden an Server außerhalb der EU/des EWR übertragen. Seit dem Schrems-II-Urteil (2020) ist das nur mit Standardvertragsklauseln + zusätzlichen Schutzmaßnahmen UND vorheriger Einwilligung zulässig. Beste Lösung: durch EU-Alternativen ersetzen, wo möglich.

WordPress Spezial für WordPress: so tragen Sie es ein

WordPress-Plugin: Häufige Übeltäter und EU-Alternativen: Google Fonts → Bunny Fonts oder lokal hosten (Plugin „OMGF — Host Google Fonts Locally"). Google Analytics → Matomo (selbst gehostet) oder Plausible (EU-Server). Google reCAPTCHA → hCaptcha (EU) oder Friendly Captcha. Google Maps → OpenStreetMap. YouTube-Einbettung → Plugin „WP YouTube Lyte" lädt erst nach Klick. CDN: Cloudflare → BunnyCDN (EU) oder KeyCDN.

✓ So prüfen Sie, ob es funktioniert: Im Inkognito-Modus laden, F12 → Netzwerk → alle Anfragen auflisten → unter „Domain" auf Server außerhalb EU prüfen. Nach Umstellung sollte hier keine US-Domain mehr unaufgefordert geladen werden.

2 Drittanbieter-Server innerhalb der EU/des EWR.

versandhandel.dimdi.de 2 Anfragen · Germany (DE) · EU/EWR

Aufgerufene URLs:

https://versandhandel.dimdi.de/img/logo.png

https://versandhandel.dimdi.de/img/logo.gif

static.cloudflareinsights.com 1 Anfragen · Canada (CA) · EU/EWR

Aufgerufene URLs:

https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496

stats.g.doubleclick.net 1 Anfragen · United States (US) · Nicht-EU
⚠ DSGVO-Problem: Dieser Server steht außerhalb der EU/des EWR. Die Übertragung personenbezogener Daten (z.B. IP-Adressen Ihrer Besucher) an diesen Server kann gegen Art. 44–49 DSGVO verstoßen. Ohne gültige Rechtsgrundlage (z.B. Einwilligung, Standardvertragsklauseln) ist diese Datenübermittlung unzulässig.

Aufgerufene URLs:

https://stats.g.doubleclick.net/g/collect?t=dc&aip=1&_r=3&v=1&_v=j86&tid=G-8RFV54ELLS&cid=07ced2a1-9ac0-4663-a00a-4a11a6ab2522&_u=KGDAAEADQAAAAC%7E&z=821812490

www.google.com 1 Anfragen · United States (US) · Nicht-EU
⚠ DSGVO-Problem: Dieser Server steht außerhalb der EU/des EWR. Die Übertragung personenbezogener Daten (z.B. IP-Adressen Ihrer Besucher) an diesen Server kann gegen Art. 44–49 DSGVO verstoßen. Ohne gültige Rechtsgrundlage (z.B. Einwilligung, Standardvertragsklauseln) ist diese Datenübermittlung unzulässig.

Aufgerufene URLs:

https://www.google.com/ads/ga-audiences?t=sr&aip=1&_r=4&v=1&_v=j86&tid=G-8RFV54ELLS&cid=07ced2a1-9ac0-4663-a00a-4a11a6ab2522&_u=KGDAAEADQAAAAC%7E&z=821812490&slf_rd=1

80 Tracker-Erkennung

1 bekannte(r) Tracker erkannt! Diese verfolgen Besucher über verschiedene Websites.

☛ Handlungsbedarf: DSGVO-VERSTOSS: Tracker verfolgen Ihre Besucher über verschiedene Websites hinweg. Das erfordert eine ausdrückliche Einwilligung VOR dem Laden der Tracker. Lösungen: (1) Entfernen Sie alle nicht notwendigen Tracker. (2) Wechseln Sie zu datenschutzfreundlichen Alternativen (z.B. Matomo, Plausible, Fathom statt Google Analytics). (3) Für unverzichtbare Tracker: Implementieren Sie einen Consent-Banner, der Tracker erst NACH Zustimmung lädt.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Tracker (Google Analytics, Facebook Pixel, …) erfassen Besucher und verfolgen sie über mehrere Websites. Nach § 25 TDDDG und Art. 6 Abs. 1 DSGVO erforderlich: ausdrückliche Einwilligung VOR dem Laden des Trackers. „Weiter scrollen = Zustimmung" ist NICHT zulässig.

WordPress Spezial für WordPress: so tragen Sie es ein

WordPress-Plugin: Consent-Plugins, die Tracker korrekt blockieren bis zur Einwilligung: „Complianz" (kostenlos, sehr gut), „Real Cookie Banner", „Borlabs Cookie" (kostenpflichtig, am gründlichsten). Prinzip nach Einrichtung: Tracker-Snippet (z.B. GA-Script) NICHT direkt im Theme einbauen, sondern dem Consent-Plugin übergeben, das schaltet sie erst nach „Zustimmen" frei. Datenschutzfreundliche Tracker-Alternativen: Matomo (Cookieless-Modus → braucht u.U. kein Consent), Plausible (EU, anonym, kein Consent nötig laut Anbieter — Rechtsberatung empfohlen).

✓ So prüfen Sie, ob es funktioniert: Inkognito-Browser, Seite laden — VOR „Zustimmen": F12 → Netzwerk → keine Anfragen an google-analytics.com, facebook.com/tr usw. NACH „Zustimmen" dann ja.

Google (Content): www.google.com

100 Externe Ressourcen-Integrität (SRI)

1 von 1 externen Ressource(n) nutzen Integritätsprüfung (SRI).

100 DNS-Sicherheit

CAA-Einträge vorhanden: comodoca.com, digicert.com; cansignhttpexchanges=yes, letsencrypt.org, pki.goog; cansignhttpexchanges=yes, ssl.com, comodoca.com, digicert.com; cansignhttpexchanges=yes, letsencrypt.org, pki.goog; cansignhttpexchanges=yes, ssl.com — nur bestimmte Zertifizierungsstellen dürfen Zertifikate ausstellen.

2 Nameserver vorhanden — gute Redundanz.

IPv6-Unterstützung vorhanden (AAAA-Einträge).

SPF-Eintrag vorhanden: v=spf1 mx a include:spf.protection.outlook.com include:eu.transmail.net include:eu.zcsend.net include:usermail.zohocreat — schützt vor E-Mail-Spoofing.

DMARC-Eintrag vorhanden: v=DMARC1; p=reject; — E-Mail-Authentifizierung aktiv.

100 Sicherheitskontakt (security.txt)

security.txt gefunden: https://digitaler-pflegeantrag.de/.well-known/security.txt

Kontaktfeld vorhanden (Pflichtfeld) — Sicherheitsforscher können Schwachstellen melden.

Ablaufdatum vorhanden (Pflichtfeld).

Verschlüsselungsinformationen angegeben.

Bevorzugte Sprachen angegeben.

75 Externe Reporting-Endpunkte

Network Error Logging (NEL) aktiv — Netzwerkfehler werden an einen externen Dienst gemeldet.

☛ Handlungsbedarf: Network Error Logging sendet Fehlerdaten an externe Server. Stellen Sie sicher, dass diese Datenübermittlung in Ihrer Datenschutzerklärung erwähnt wird und der Empfänger DSGVO-konform arbeitet.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Network Error Logging (NEL) meldet Netzwerkfehler an einen externen Server. Wie bei externem Reporting: in Datenschutzerklärung erwähnen und prüfen, ob der Empfänger DSGVO-konform arbeitet.

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: .htaccess im Web-Root

<IfModule mod_headers.c>
    Header always unset NEL
    Header always unset Report-To
</IfModule>

⚠ Wenn Sie NEL nicht aktiv brauchen: diese zwei Zeilen entfernen beide Reporting-Header. Wenn doch: in der Datenschutzerklärung dokumentieren.

WordPress Spezial für WordPress: so tragen Sie es ein

Weg 1: per .htaccess (empfohlen — kein Theme bearbeiten)

Datei: .htaccess im WordPress-Root

<IfModule mod_headers.c>
    Header always unset NEL
    Header always unset Report-To
</IfModule>

⚠ Falls die Header von einem Plugin gesetzt werden, das Plugin selbst konfigurieren.

✓ So prüfen Sie, ob es funktioniert: F12 → Netzwerk → erste Anfrage → Response Header: KEINE Einträge „nel" und „report-to" mehr (oder bewusst dokumentiert).

Daten werden an externen Dienst gemeldet: Report-To: a.nel.cloudflare.com

☛ Handlungsbedarf: Ihre Website sendet Berichte an externe Dienste. Prüfen Sie, ob eine Datenschutzerklärung diese Datenübermittlung abdeckt und ob der externe Dienst DSGVO-konform ist. Falls der Dienst außerhalb der EU sitzt, gelten die gleichen Regeln wie für Drittanbieter-Server.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Ihre Website sendet Fehler- oder CSP-Berichte an einen externen Dienst (Report-To: a.nel.cloudflare.com). DSGVO-relevant: dabei werden mindestens IP-Adresse und URL übertragen. Prüfen Sie, ob (a) der Empfänger DSGVO-konform arbeitet, (b) die Übermittlung in Ihrer Datenschutzerklärung erwähnt ist, (c) ein Auftragsverarbeitungsvertrag (AVV) besteht.

WordPress Spezial für WordPress: so tragen Sie es ein

WordPress-Plugin: Wenn Sie den Reporting-Empfänger nicht selbst eingerichtet haben, kommt er meist aus einem Plugin (z.B. Sentry, Rollbar, Datadog). Im Plugin-Konfigurationsbereich prüfen — entweder deaktivieren, durch EU-Anbieter ersetzen oder konsent-pflichtig stellen.

✓ So prüfen Sie, ob es funktioniert: Datenschutzerklärung enthält Eintrag zu Fehler-Reporting + AVV liegt vor. Im Inkognito-Modus: F12 → Netzwerk → keine ungewollten Berichts-Anfragen.

85 Cookie-Einwilligung (Consent)

Cookie-Einwilligungssystem erkannt: TCF API (__tcfapi), Borlabs Cookie, borlabs.

TCF-kompatibles Consent-System (Transparency & Consent Framework) — Standard der IAB.

Consent-System erkannt, aber Banner scheint nicht sichtbar zu sein.

☛ Handlungsbedarf: Das Consent-System scheint nicht sichtbar zu sein. Stellen Sie sicher, dass der Cookie-Banner beim ersten Besuch angezeigt wird und nicht durch CSS oder JavaScript verborgen ist.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Ihr Consent-System ist eingebaut, aber das Banner scheint nicht sichtbar — möglicherweise von einem anderen Plugin oder eigenen CSS-Regeln verborgen. Das ist ein Risiko: ohne sichtbares Banner gilt keine Einwilligung.

WordPress Spezial für WordPress: so tragen Sie es ein

WordPress-Plugin: Vorgehen: 1) Browser-Cache + Cookies löschen, Inkognito-Tab nutzen. 2) Im Consent-Plugin: prüfen, ob Anzeige-Bedingungen das Banner versehentlich ausblenden (z.B. „nur für EU-Besucher" — und Sie testen vom EU-Server gerade aus). 3) Browser-Konsole F12 → Tab „Konsole" auf rote Fehler von consent-Skripten prüfen. 4) Inspektor → DOM nach „cookie", „consent" durchsuchen — Element vorhanden, aber display:none? Z-Index zu niedrig? 5) Anderes Plugin (Cookie-Notice-Konkurrent) deinstallieren.

✓ So prüfen Sie, ob es funktioniert: Inkognito-Tab, Seite laden, 5 Sekunden warten — Banner sichtbar zentral/unten, blockiert Hauptinhalt nicht komplett, ist anklickbar.

Tracker werden bereits beim Seitenaufruf geladen — möglicherweise VOR der Einwilligung.

☛ Handlungsbedarf: Tracker werden beim Seitenaufruf geladen, möglicherweise bevor der Besucher zugestimmt hat. Stellen Sie sicher, dass Ihr Consent-System Tracker erst NACH Einwilligung aktiviert (Opt-in, nicht Opt-out).
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Ihre Tracker werden geladen, bevor der Nutzer einwilligen kann („pre-consent loading"). Das ist ein häufiger Konfigurationsfehler bei Cookie-Plugins — Banner erscheint, aber zu spät: GA-Skript läuft schon. Verstößt gegen § 25 TDDDG.

WordPress Spezial für WordPress: so tragen Sie es ein

WordPress-Plugin: Ursache liegt fast immer im Theme oder einem Tracking-Plugin, das den Tracker-Code direkt einbettet (z.B. „Google Analytics for WordPress" mit Auto-Insert). Lösung: 1) Tracking-Code AUS dem Theme/Plugin entfernen. 2) In Consent-Plugin (Complianz/Real Cookie Banner): Tracker als „Service" anlegen, Skript-Snippet dort hinterlegen — das Plugin lädt es erst bei Einwilligung. 3) ALTERNATIV: Plugin „Pys — PixelYourSite" + Consent-Verknüpfung. KEIN „GA bevor Consent als anonymisiert laden" — ist DSGVO-rechtlich nicht abschließend geklärt und riskant.

✓ So prüfen Sie, ob es funktioniert: Inkognito → F12 → Netzwerk (alles löschen, dann Aufzeichnung starten) → Seite laden, NICHT auf Banner klicken, 10 Sekunden warten → es darf KEINE Anfrage an google-analytics.com, googletagmanager.com, facebook.com/tr, doubleclick.net etc. erscheinen.

100 Datenschutzerklärung & Impressum

Datenschutzerklärung verlinkt: „Datenschutzerklärung" (https://digitaler-pflegeantrag.de/datenschutzerklarung/).

Impressum verlinkt: „Impressum" (https://digitaler-pflegeantrag.de/impressum/).

Datenschutzerklärung ist erreichbar (HTTP 200).

⚙ Ihre fertige Security-htaccess

Alle fehlenden Security-Header zu einem einzigen Block kombiniert. Diesen Block ans Ende Ihrer .htaccess hängen — fertig. 2 Header werden gesetzt.

⚠ Warum diese Empfehlung KEINEN 100%-Score gibt — und warum das mit WordPress so ist

Die Content-Security-Policy oben enthält bewusst 'unsafe-inline' sowohl für style-src als auch für script-src. Damit ist KEIN vollständiger XSS-Schutz möglich — das ist eine pragmatische Entscheidung, kein Bug.

Warum? Ein typisches WordPress-Setup (Theme + 5-15 Plugins) schreibt 10-50 verschiedene Inline-<script>-Blocks ins HTML: jQuery-Init, Slider-Initialisierung, Cookie-Banner, Tracking, GTM, Web Vitals, Lazy-Load, Speculation Rules usw. Wenn die strikte CSP script-src 'self' diese alle blockt, ist die Site optisch und funktional kaputt (Slider weiß, Cookie-Banner zerschossen, Plugins tot). Genau dieses Problem hatten Sie soeben mit Ihrer Slider-Seite.

Konsequenz fürs Scoring: Sites, die WordPress mit Plugins einsetzen, können in dieser App maximal ~75-85 Punkte in der CSP-Kategorie erreichen — das volle 100%-Rating ist erst möglich, wenn der inline-Code per Nonce oder Hash signiert wird (technisch anspruchsvoll, bricht bei jedem Theme/Plugin-Update).

Wege zum vollen XSS-Schutz (in steigender Komplexität):

  • Plugin „WP Content Security Policy & Headers" — fügt automatisch Nonces zu inline-Scripts hinzu (mittlerer Aufwand, sauberste WP-Lösung).
  • Hash-basierte CSP — jedes inline-Script per SHA-256 in der CSP whitelisten (fragil, bricht bei Updates).
  • Inline-Scripts externalisieren — Theme/Plugins so umbauen, dass kein inline-JS mehr ausgegeben wird (großer Aufwand, oft unmöglich).

Wer keinen dieser Wege geht, lebt mit 'unsafe-inline' — wie ca. 95% aller produktiven WordPress-Sites im Web. Die anderen CSP-Direktiven schützen weiterhin: default-src 'self' blockt externe Ressourcen, object-src 'none' verbietet Flash/Java, frame-ancestors 'self' verhindert Clickjacking, base-uri 'self' verhindert Base-Tag-Hijacking. Es ist kein Maximalschutz, aber realistischer Schutz für die WP-Praxis.

Apache Standard-Apache (für alle Hoster, ohne WordPress)

Diesen Block ans Ende Ihrer .htaccess im Web-Root hängen — fertig.

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; font-src 'self' https: data:; object-src 'none'; frame-ancestors 'self'; base-uri 'self'; upgrade-insecure-requests"
</IfModule>

WordPress WordPress: .htaccess im WP-Root

Diesen Block OBERHALB der Zeile „# BEGIN WordPress" einfügen, sonst überschreibt WP ihn bei Permalink-Änderungen.

# BEGIN WebForensik Security
<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; font-src 'self' https: data:; object-src 'none'; frame-ancestors 'self'; base-uri 'self'; upgrade-insecure-requests"
</IfModule>
# END WebForensik Security

WordPress Alternative für WordPress: functions.php im Child-Theme

Falls Ihr Hoster .htaccess-Änderungen nicht erlaubt: dieses PHP-Snippet ans Ende der functions.php Ihres CHILD-Themes hängen. Vorher Backup machen — NIE das Haupt-Theme bearbeiten, das wird bei Updates überschrieben.

add_action('send_headers', function () {
    header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
    header("Content-Security-Policy: default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; font-src 'self' https: data:; object-src 'none'; frame-ancestors 'self'; base-uri 'self'; upgrade-insecure-requests");
});
Trockenübung — wir laden Ihre Seite nochmal mit den vorgeschlagenen Headern und zeigen, welche Ressourcen geblockt würden. Dauert ca. 30 Sekunden.
HTTP Response Headers
HeaderWert
alt-svc h3=":443"; ma=86400
cf-cache-status DYNAMIC
cf-ray a2a68ee54efcd114-CDG
content-encoding br
content-security-policy default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' data: https:; connect-src 'self' https:; frame-src https:; frame-ancestors 'self' https://pflegeantrag.de https://enkian-solutions.
content-type text/html; charset=UTF-8
date Thu, 13 Aug 2026 09:05:27 GMT
expect-ct max-age=86400, enforce
last-modified Thu, 13 Aug 2026 07:39:11 GMT
link <https://digitaler-pflegeantrag.de/wp-json/>; rel="https://api.w.org/", <https://digitaler-pflegeantrag.de/wp-json/wp/v2/pages/3440>; rel="alternate"; title="JSON"; type="application/json", <https://digitaler-pflegeantrag.de/>; rel=shortlink
nel {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
permissions-policy geolocation=(), microphone=(), camera=(), payment=(), usb=(), interest-cohort=()
referrer-policy strict-origin-when-cross-origin
report-to {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=nMe1L3LgG6Tv5YFuEhI%2BqvPIqX3c69NXWSpJSIhZtRUDAdlWShjTjA0QbLJYpZZq9RGNC%2B8g60JgzWgikbcP0Ps%2BO3CtJ%2F6S7vEpPbLwsNMz6TjqEACSYZ34HIP%2FODU3MyV2EkLu1hhU8yPXfKYjFXy4MSliJ8U%3D"}]}
server cloudflare
server-timing cfCacheStatus;desc="DYNAMIC" cfEdge;dur=71,cfOrigin;dur=0
strict-transport-security max-age=2592000; includeSubDomains
vary Accept-Encoding
x-cache HIT
x-cache-enabled true
x-content-type-options nosniff
x-frame-options SAMEORIGIN
x-xss-protection 1; mode=block

Neue Analyse · Vergleichen

Bewertung auf Ihrer Website einbetten

Zeigen Sie Ihren WebForensik-Score öffentlich. Das Badge ist ein leichtes SVG, lädt schnell und respektiert die Privatsphäre Ihrer Besucher (kein Tracking).

WebForensik Score Badge

HTML-Code zum Einbetten (dieser konkrete Scan)

<a href="https://webforensik.de/results.php?id=985" target="_blank" rel="noopener">
  <img src="https://webforensik.de/badge.php?id=985" alt="WebForensik Score" width="174" height="28">
</a>

Oder dynamisch — zeigt immer den jüngsten Scan dieser Domain

<a href="https://webforensik.de/?url=https://digitaler-pflegeantrag.de" target="_blank" rel="noopener">
  <img src="https://webforensik.de/badge.php?domain=digitaler-pflegeantrag.de" alt="WebForensik Score" width="174" height="28">
</a>