Deutsch | English Header-Test API Über WebForensik

WebForensik

Ergebnisse für https://sterkyachts.com/

Analysezeitpunkt: 2026-08-05 14:31:15

57

Gesamtbewertung

Veränderung seit dem letzten Scan +2 verbessert

Vergleich mit Scan vom 05.08.2026 13:49 (Score 55 → 57) · Kompletten Verlauf ansehen

Externe Ressourcen-Integrität (SRI) 10→8 HTTPS / Verschlüsselung 80→100

Score-Verlauf für diese Domain Kompletten Verlauf ansehen →

DSGVO-Zusammenfassung

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

DSGVO-Probleme erkannt (4):

❌ 7 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:

  • www.google.com (United States)
  • www.googletagmanager.com (United States)
  • ad.doubleclick.net (United States)
  • region1.google-analytics.com (United States)
  • fonts.googleapis.com (United States)
  • www.gstatic.com (United States)
  • fonts.gstatic.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)

⚠ Drittanbieter-Cookies werden gesetzt — ohne Einwilligung ein Verstoß gegen § 25 TDDDG.

⚠ Keine Content Security Policy — erhöhtes Risiko für Cross-Site-Scripting (XSS) und Datendiebstahl.

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-07).

Starke Verschlüsselungsmethode (TLS_AES_256_GCM_SHA384, 256 Bit).

90 Erzwungene Verschlüsselung (HSTS)

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

HSTS-Dauer: 31536000 Sekunden (mindestens 1 Jahr) — sehr gut.

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

0 Content Security Policy (CSP)

Keine Content Security Policy (CSP) gefunden. Die Website hat keinen Schutz gegen eingeschleusten Schadcode.

☛ Handlungsbedarf: Richten Sie eine Content Security Policy ein. Diese schützt Ihre Besucher vor eingeschleustem Schadcode (Cross-Site-Scripting/XSS). Beginnen Sie mit einer einfachen Richtlinie: Content-Security-Policy: default-src 'self'. Ihr Webentwickler oder Hoster kann Ihnen dabei helfen.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Eine Content Security Policy (CSP) ist wie eine Türsteher-Regel für den Browser: „Skripte und Stile dürfen nur aus diesen erlaubten Quellen geladen werden." Ohne CSP kann eingeschleuster Schadcode (XSS) ungehindert nachladen, was er will. Starten Sie mit einer einfachen, sicheren Grundregel.

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'; font-src 'self' https: data:; object-src 'none'; frame-ancestors 'self'; base-uri 'self'"
</IfModule>

⚠ Diese Policy ist bewusst pragmatisch (erlaubt Inline-Styles, weil viele Themes/Plugins sie brauchen). Wenn nach dem Aktivieren etwas nicht funktioniert: F12 → Konsole zeigt „Refused to load…" — dann die jeweilige Domain hinter script-src bzw. img-src ergänzen.

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

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

Datei: .htaccess im WordPress-Root

# BEGIN WebForensik CSP
<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'; font-src 'self' https: data:; object-src 'none'; frame-ancestors 'self'; base-uri 'self'"
</IfModule>
# END WebForensik CSP

⚠ WordPress nutzt häufig externe Skripte (Google Fonts, jQuery-CDN, Analytics-Pixel) — wenn die wegen CSP geblockt werden: in der Konsole sehen, welche Domain blockiert wurde, dann diese Domain hinter „script-src 'self'" mit Leerzeichen ergänzen.

Weg 2: per functions.php im Child-Theme (Alternative für Fortgeschrittene)

Datei: functions.php Ihres CHILD-Themes

add_action('send_headers', function () {
    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'");
});

⚠ Wenn Sie unsicher sind: erst mit „Content-Security-Policy-Report-Only" beginnen (nur überwachen, nicht blockieren), Verstöße in der Konsole beobachten, dann auf scharfe Policy umstellen.

✓ So prüfen Sie, ob es funktioniert: Seite öffnen, F12 → Konsole — keine roten „Refused to load…"-Meldungen. Tab „Netzwerk" → erste Anfrage → Response Header „content-security-policy" sichtbar.

↓ 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.

0 MIME-Typ-Schutz

Ungültiger Wert: nosniff nosniff. Erwartet wird „nosniff".

☛ Handlungsbedarf: Der aktuelle Wert ist fehlerhaft. Setzen Sie den Header korrekt: X-Content-Type-Options: nosniff
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Ihr X-Content-Type-Options-Header hat einen ungültigen Wert (nosniff nosniff) — erwartet wird genau „nosniff". Korrigieren.

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: .htaccess im Web-Root

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
</IfModule>

⚠ Vorhandene fehlerhafte Zeile ersetzen.

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 X-Content-Type-Options "nosniff"
</IfModule>

⚠ Fehlerhaften Eintrag ersetzen.

✓ So prüfen Sie, ob es funktioniert: F12 → Netzwerk → Response Header: Wert exakt „nosniff".

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

Clickjacking-Schutz aktiv: X-Frame-Options = SAMEORIGIN.

0 Berechtigungen (Kamera, Mikrofon etc.)

Keine Permissions-Policy gesetzt. Drittanbieter-Skripte könnten auf Kamera, Mikrofon oder Standort zugreifen.

☛ Handlungsbedarf: Setzen Sie eine Permissions-Policy, um den Zugriff auf Kamera, Mikrofon und Standort zu kontrollieren. DSGVO-relevant: Ohne diese Einstellung könnten Drittanbieter-Skripte unbemerkt auf sensible Geräte-Funktionen zugreifen. Beispiel: Permissions-Policy: camera=(), microphone=(), geolocation=()
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Die Permissions-Policy kontrolliert, ob Skripte (auch von Drittanbietern) auf Kamera, Mikrofon, Standort, Bewegungssensoren etc. zugreifen dürfen. DSGVO-relevant, weil sensible Geräte-APIs sonst unbemerkt angesprochen werden können.

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: .htaccess im Web-Root

<IfModule mod_headers.c>
    Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=()"
</IfModule>

⚠ „()" am Ende heißt: kein Aufrufer (auch nicht Ihre eigene Seite) darf diese API nutzen. Falls Sie z.B. eine Karten-Funktion mit Geolokalisierung haben: geolocation=(self) statt geolocation=(). „interest-cohort=()" deaktiviert Googles FLoC-Tracking.

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 Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), interest-cohort=()"
</IfModule>

⚠ Standard-WordPress braucht keine dieser APIs. Wenn Sie ein Plugin nutzen, das z.B. die Kamera braucht (QR-Scanner, Video-Upload): die entsprechende API auf „(self)" setzen.

Weg 2: per functions.php im Child-Theme (Alternative für Fortgeschrittene)

Datei: functions.php Ihres CHILD-Themes

add_action('send_headers', function () {
    header('Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), interest-cohort=()');
});

⚠ Backup vor jeder Änderung an functions.php.

✓ So prüfen Sie, ob es funktioniert: F12 → Netzwerk → Response Header: „permissions-policy" sichtbar.

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

6 Erstanbieter- und 1 Drittanbieter-Cookie(s).

1 Drittanbieter-Cookie(s) erkannt. Diese können genutzt werden, um Sie über verschiedene Websites hinweg zu verfolgen.

☛ Handlungsbedarf: DSGVO-VERSTOSS: Drittanbieter-Cookies tracken Besucher über mehrere Websites hinweg. Das erfordert eine ausdrückliche Einwilligung (Opt-in) BEVOR die Cookies gesetzt werden. Lösung: (1) Prüfen Sie, welche externen Dienste die Cookies setzen. (2) Entfernen Sie nicht benötigte Dienste. (3) Für notwendige Dienste: Implementieren Sie einen Cookie-Consent-Banner, der diese Cookies erst nach Zustimmung lädt.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Drittanbieter-Cookies (z.B. von Google, Facebook) verfolgen Besucher über Websites hinweg. Nach § 25 TDDDG und Art. 6 DSGVO ist VOR dem Setzen eine ausdrückliche Einwilligung Pflicht. Lösung in drei Schritten: (1) prüfen, welche externen Dienste die Cookies setzen, (2) nicht zwingend nötige Dienste entfernen, (3) für unverzichtbare Dienste ein Consent-Banner einbauen, das die Cookies erst nach „Zustimmen" lädt.

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

WordPress-Plugin: Cookie-Consent-Plugins für WordPress: „Complianz" (kostenlos, sehr gründlich), „Borlabs Cookie" (kostenpflichtig, deutsch, sehr gut für Profis), „Real Cookie Banner" (DSGVO-fokussiert). Wichtig bei der Konfiguration: alle Tracking-Dienste auf „Vor Einwilligung NICHT laden" stellen — die meisten Plugins erkennen Standard-Dienste (GA, Maps, YouTube) automatisch.

✓ So prüfen Sie, ob es funktioniert: Browser im Inkognito-Modus öffnen, F12 → Tab „Application" → „Cookies" → ihre-domain.de. VOR dem Klick auf „Zustimmen" dürfen dort KEINE Cookies von google.com, facebook.com etc. stehen. NACH Zustimmung dann ja.

3 von 7 Cookie(s) ohne Secure-Flag — werden auch über unverschlüsselte Verbindungen gesendet.

☛ Handlungsbedarf: Setzen Sie das Secure-Flag für alle Cookies. Ohne dieses Flag werden Cookies auch über unverschlüsselte HTTP-Verbindungen gesendet und können abgefangen werden. Ihr Webentwickler kann das in der Cookie-Konfiguration ändern.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Cookies ohne „Secure"-Flag werden auch über unverschlüsselte HTTP-Verbindungen gesendet — und können dort von jedem im selben WLAN abgefangen werden. Bei reinen HTTPS-Sites gibt es keinen Grund, das Flag wegzulassen.

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: .htaccess im Web-Root

<IfModule mod_headers.c>
    Header always edit Set-Cookie "^(.*)$" "$1; Secure" "expr=!(resp('Set-Cookie') -strmatch '*Secure*')"
</IfModule>

⚠ Dieser Header hängt „; Secure" an Cookies an, die es noch nicht haben. Funktioniert ab Apache 2.4. Saubere Alternative: das setzende Skript korrigieren (PHP: session.cookie_secure=1 in php.ini, bzw. setcookie()-Parameter „secure" auf true).

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

Weg 2: per functions.php im Child-Theme (Alternative für Fortgeschrittene)

Datei: functions.php Ihres CHILD-Themes

add_filter('secure_logged_in_cookie', '__return_true');
add_action('init', function () {
    if (!headers_sent()) {
        @ini_set('session.cookie_secure', '1');
        @ini_set('session.cookie_httponly', '1');
        @ini_set('session.cookie_samesite', 'Lax');
    }
});

⚠ Setzt Secure-Flag für WordPress-Login-Cookies und PHP-Session-Cookies. Bei Plugins, die eigene Cookies setzen, muss man dort separat ansetzen (Plugin-Einstellungen prüfen).

WordPress-Plugin: Plugins, die Cookies setzen (Cache, Anti-Spam, A/B-Test), haben oft in den Einstellungen Schalter wie „Secure Cookies" oder „nur über HTTPS".

✓ So prüfen Sie, ob es funktioniert: F12 → Application → Cookies → ihre-domain.de. Spalte „Secure" sollte bei allen Cookies ein Häkchen zeigen.

6 von 7 Cookie(s) ohne HttpOnly-Flag — könnten von Schadcode ausgelesen werden.

☛ Handlungsbedarf: Setzen Sie das HttpOnly-Flag für alle Cookies, die nicht von JavaScript benötigt werden. Das schützt vor dem Diebstahl von Sitzungsdaten durch Schadcode.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Cookies ohne „HttpOnly"-Flag können von JavaScript ausgelesen werden — ein XSS-Angreifer kann damit Session-Cookies stehlen und sich als der eingeloggte Nutzer ausgeben. Setzen Sie HttpOnly für alle Cookies, die JavaScript nicht aktiv selbst braucht.

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: .htaccess im Web-Root

<IfModule mod_headers.c>
    Header always edit Set-Cookie "^(.*)$" "$1; HttpOnly" "expr=!(resp('Set-Cookie') -strmatch '*HttpOnly*')"
</IfModule>

⚠ Sauberer wäre, Cookies direkt mit HttpOnly zu setzen (PHP: setcookie(..., [..., 'httponly'=>true])). Ausnahme: Cookies, die JS aktiv lesen muss (z.B. manche Consent-Cookies).

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

Weg 2: per functions.php im Child-Theme (Alternative für Fortgeschrittene)

Datei: functions.php Ihres CHILD-Themes (oder besser wp-config.php)

@ini_set('session.cookie_httponly', '1');
@ini_set('session.cookie_secure', '1');

⚠ WordPress-Login-Cookies sind seit Version 2.x bereits HttpOnly. Wenn Sie ein Plugin nutzen, das Session-Cookies setzt (z.B. WooCommerce-Cart vor Login), prüfen Sie dort die Einstellungen.

✓ So prüfen Sie, ob es funktioniert: F12 → Application → Cookies → Spalte „HttpOnly" zeigt überall Häkchen (außer bei bewusst JS-lesbaren Cookies wie z.B. dem Consent-Cookie).

4 von 7 Cookie(s) ohne SameSite-Schutz — werden bei Anfragen von anderen Websites mitgesendet.

☛ Handlungsbedarf: Setzen Sie das SameSite-Attribut (Lax oder Strict) für alle Cookies. Das verhindert, dass Cookies bei Anfragen von fremden Websites mitgesendet werden (CSRF-Schutz).
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Ohne „SameSite"-Attribut werden Cookies bei Anfragen von fremden Websites an Sie mitgesendet — Grundlage für CSRF-Angriffe (eine fremde Seite kann im Hintergrund Aktionen in Ihrem Namen auslösen, weil das Login-Cookie mitgeschickt wird). Setzen Sie SameSite=Lax als Minimum.

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: .htaccess im Web-Root

<IfModule mod_headers.c>
    Header always edit Set-Cookie "^(.*)$" "$1; SameSite=Lax" "expr=!(resp('Set-Cookie') -strmatch '*SameSite*')"
</IfModule>

⚠ SameSite=Lax ist ein guter Standard. Strict ist sicherer, bricht aber externe Verlinkungen (User klickt von Google auf Ihre Seite — Cookies werden NICHT gesendet, Login ist weg). None erlaubt Cross-Site, braucht zwingend „; Secure".

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

Weg 2: per functions.php im Child-Theme (Alternative für Fortgeschrittene)

Datei: wp-config.php (oberhalb von „/* That’s all, stop editing! */")

@ini_set('session.cookie_samesite', 'Lax');
@ini_set('session.cookie_secure', '1');
@ini_set('session.cookie_httponly', '1');

⚠ Setzt SameSite/Secure/HttpOnly für PHP-Session-Cookies. WordPress-Login-Cookies sind seit WP 6.2 standardmäßig SameSite=Lax. Bei älteren Versionen unbedingt updaten.

✓ So prüfen Sie, ob es funktioniert: F12 → Application → Cookies → Spalte „SameSite" — sollte überall „Lax" oder „Strict" stehen, nicht leer.

Erstanbieter

Name Domain Verschlüsselt Nur Server SameSite
uncode_privacy[consent_types] sterkyachts.com Ja Nein Strict
_gcl_au .sterkyachts.com Nein Nein None
_ga_89X3M5N3KZ .sterkyachts.com Nein Nein None
_ga .sterkyachts.com Nein Nein None
cookieyes-consent sterkyachts.com Ja Nein Strict
uncode_gdpr_session_2bd8634f1eb114eb7f50 sterkyachts.com Ja Nein Strict

Drittanbieter

Name Domain Verschlüsselt Nur Server SameSite
_GRECAPTCHA www.google.com Ja Ja None
↓ KOMPLETT-LÖSUNG ANZEIGEN Alle fehlenden Security-Header zusammen am Ende des Reports — fertig zum Kopieren.
70 Lokaler Speicher (Web Storage)

5 localStorage- und 1 sessionStorage-Einträge gefunden.

localStorage

NameWert
onetap-accessibility-free {"dynamicFeatureSet":{"visionImpairedMode":false,"seizureSafeProfileMode":false,
_gcl_ls {"schema":"gcl","version":1,"gsid_dc":{"value":{"joinId":"DXnhY_We1YpB0KJ5xuHlqh
_grecaptcha 09AKhCRwgj3qzk8m7FmzVNduPZOUOG0pRdTgo6L-dLUwCPDqNCQr0OsaGp4ERW2I8CnbYMrs9uhiPlXo
webp_lossy_supported true
webp_lossless_supported true

sessionStorage

NameWert
wpEmojiSettingsSupports {"supportTests":{"flag":false,"emoji":true},"timestamp":1785933066696}
10 Drittanbieter-Anfragen

35 Anfrage(n) an 12 verschiedene Drittanbieter-Server.

7 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.

5 Drittanbieter-Server innerhalb der EU/des EWR.

cdn-cookieyes.com 8 Anfragen · Canada (CA) · EU/EWR

Aufgerufene URLs:

https://cdn-cookieyes.com/client_data/80def7f247de04a03921b7bac35cdc63/script.js

https://cdn-cookieyes.com/client_data/80def7f247de04a03921b7bac35cdc63/banner.js

https://cdn-cookieyes.com/client_data/80def7f247de04a03921b7bac35cdc63/GRTDLl1e.json

https://cdn-cookieyes.com/client_data/80def7f247de04a03921b7bac35cdc63/config/pNuXc0-K.json

https://cdn-cookieyes.com/client_data/80def7f247de04a03921b7bac35cdc63/translations/QooF1mwT.json

https://cdn-cookieyes.com/client_data/80def7f247de04a03921b7bac35cdc63/audit-table/iGdGXiyC.json

https://cdn-cookieyes.com/assets/images/revisit.svg

https://cdn-cookieyes.com/assets/images/close.svg

www.google.com 7 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/recaptcha/api.js?render=6Le_7OUrAAAAALVRpAYisfgyV734KwCOo8a2VZYk&ver=3.0

https://www.google.com/ccm/collect?rcb=4&frm=0&apvc=1&ae=g&auid=672944490.1785933066&dt=Sterkyachts%20%E2%80%93%20Supersport%20is%20in%20our%20DNA&en=page_view&dl=https%3A%2F%2Fsterkyachts.com%2F&scrs

https://www.google.com/ccm/collect?rcb=13&frm=0&apvc=0&auid=672944490.1785933066&dt=Sterkyachts%20%E2%80%93%20Supersport%20is%20in%20our%20DNA&tid=AW-11413605167&en=page_view&dl=https%3A%2F%2Fsterkyac

https://www.google.com/recaptcha/api2/anchor?ar=1&k=6Le_7OUrAAAAALVRpAYisfgyV734KwCOo8a2VZYk&co=aHR0cHM6Ly9zdGVya3lhY2h0cy5jb206NDQz&hl=en&v=A7KpaEASfhDcK0nXxgQEyyYv&size=invisible&anchor-ms=20000&exe

https://www.google.com/recaptcha/api2/webworker.js?hl=en&v=A7KpaEASfhDcK0nXxgQEyyYv

https://www.google.com/recaptcha/api2/reload?k=6Le_7OUrAAAAALVRpAYisfgyV734KwCOo8a2VZYk

https://www.google.com/recaptcha/api2/clr?k=6Le_7OUrAAAAALVRpAYisfgyV734KwCOo8a2VZYk

www.googletagmanager.com 5 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.googletagmanager.com/gtm.js?id=GTM-T72GFBJ

https://www.googletagmanager.com/gtag/js?id=GT-TBNN44J

https://www.googletagmanager.com/gtag/js?id=AW-11413605167&cx=c&gtm=4e6831

https://www.googletagmanager.com/gtag/js?id=GT-TBNN44J&cx=c&gtm=4e6831

https://www.googletagmanager.com/gtag/js?id=G-89X3M5N3KZ&cx=c&gtm=4e6831

www.gstatic.com 5 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.gstatic.com/recaptcha/releases/A7KpaEASfhDcK0nXxgQEyyYv/recaptcha__en.js

https://www.gstatic.com/recaptcha/releases/A7KpaEASfhDcK0nXxgQEyyYv/styles__ltr.css

https://www.gstatic.com/recaptcha/api2/logo_48.png

... und 2 weitere Anfrage(n)

connect.facebook.net 2 Anfragen · Germany (DE) · EU/EWR

Aufgerufene URLs:

https://connect.facebook.net/en_US/fbevents.js

https://connect.facebook.net/signals/config/661250969359698?v=2.9.370&r=stable&domain=sterkyachts.com&hme=589ca7d2e122c6385be4e33d0bc38dace8e88b62db3f4bee0e6f01d386858e70&ex_m=108%2C210%2C160%2C22%2C7

fonts.gstatic.com 2 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://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2

https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBA.woff2

log.cookieyes.com 1 Anfragen · Canada (CA) · EU/EWR

Aufgerufene URLs:

https://log.cookieyes.com/api/v1/log

cdn.aichatbotjs.com 1 Anfragen · Canada (CA) · EU/EWR

Aufgerufene URLs:

https://cdn.aichatbotjs.com/chatbot.js

ad.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://ad.doubleclick.net/ccm/s/collect?auid=672944490.1785933066&gtm=45He6831v9123705557za200zd9123705557xea&fmt=8

region1.google-analytics.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://region1.google-analytics.com/g/collect?v=2&tid=G-89X3M5N3KZ&gtm=45Pe6831v9123718992z89123705557za200zb9123705557zd9123705557&_p=1785933065267&gcd=13l3l3l2l1l1&npa=1&dma_cps=a&dma=1&are=1&cid=1

fonts.googleapis.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://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap

server.supportfast.ai 1 Anfragen · Germany (DE) · EU/EWR

Aufgerufene URLs:

https://server.supportfast.ai/api/v1/widgets/chatbots/website?code=bot-9z02nq73qc&domain=sterkyachts.com

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, www.gstatic.com

8 Externe Ressourcen-Integrität (SRI)

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

☛ Handlungsbedarf: Nicht alle externen Ressourcen haben eine Integritätsprüfung. Fügen Sie SRI-Hashes für die fehlenden Ressourcen hinzu.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Nur ein Teil Ihrer externen Ressourcen (1 von 12) ist mit SRI gesichert. Ergänzen Sie integrity-Attribute auch bei den restlichen.

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

WordPress-Plugin: Vorgehen: Quelltext der Seite ansehen → alle <script src="https://…"> und <link href="https://…"> ohne integrity-Attribut → unter https://www.srihash.org/ Hash erzeugen → integrity="sha384-…" crossorigin="anonymous" ergänzen. Plugin „WP-SRI" kann das für viele Fälle automatisieren.

✓ So prüfen Sie, ob es funktioniert: F12 → Konsole bei Seitenladung: keine „Failed to find a valid digest"-Meldungen. Quelltext: alle externen <script>/<link> haben integrity-Attribut.

75 DNS-Sicherheit

Keine CAA-Einträge. Jede Zertifizierungsstelle könnte ein Zertifikat für diese Domain ausstellen.

☛ Handlungsbedarf: Erstellen Sie CAA-DNS-Einträge, um festzulegen, welche Zertifizierungsstellen Zertifikate für Ihre Domain ausstellen dürfen. Das verhindert, dass unbefugte Zertifikate ausgestellt werden.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

CAA-Einträge (Certification Authority Authorization) legen im DNS fest, welche Zertifizierungsstellen Zertifikate für Ihre Domain ausstellen dürfen. Ohne CAA-Eintrag könnte ein Angreifer bei jeder beliebigen CA ein falsches Zertifikat für Ihre Domain bestellen. Der Eintrag ist eine reine DNS-Konfiguration und wird im DNS-Panel Ihres Domain-Anbieters (NICHT in WordPress) gesetzt.

☞ Konkrete CAA-Werte für die zehn häufigsten Hoster (DACH-Raum)

Suchen Sie Ihren Hoster in der Tabelle, kopieren Sie die passenden Werte ins DNS-Panel. Bei Mehrfach-CAs: für jede CA einen eigenen CAA-Record anlegen (alle mit Tag issue, Flag 0, Name @). Zusätzlich empfohlen: ein iodef-Record mit einer Kontakt-E-Mail für Missbrauchs-Meldungen.

#HosterVerwendete CA(s)CAA-Wert(e) — Tag issue
1Hetzner Webhosting (Basic-Zertifikat, kostenlos im Paket)DigiCert (Programm „Encryption Everywhere")digicert.com
1Hetzner Webhosting (Let’s Encrypt, kostenlos)Let’s Encrypt (ISRG)letsencrypt.org
2All-InklLet’s Encrypt + Sectigo (Pro)letsencrypt.org
sectigo.com
3IONOS (1&1)DigiCert (GeoTrust) + Let’s Encryptdigicert.com
letsencrypt.org
4STRATOSectigo + Let’s Encryptsectigo.com
letsencrypt.org
5Cloudflare (Universal SSL)Google Trust Services + DigiCert + Let’s Encryptpki.goog
digicert.com
letsencrypt.org
6AWS (ACM / CloudFront)Amazon Trust Servicesamazon.com
amazontrust.com
awstrust.com
amazonaws.com
7MittwaldLet’s Encrypt + Sectigoletsencrypt.org
sectigo.com
8WebgoLet’s Encrypt + Sectigoletsencrypt.org
sectigo.com
9raidboxes (Managed WordPress)Let’s Encryptletsencrypt.org
10Host Europe / DomainFactorySectigo + Let’s Encryptsectigo.com
letsencrypt.org
Name   Typ   Flag   Tag      Wert
@      CAA   0      issue    "digicert.com"
@      CAA   0      issue    "letsencrypt.org"
@      CAA   0      iodef    "mailto:security@ihre-domain.de"

Die iodef-Zeile (letzte Zeile) ist optional aber empfohlen: dort melden CAs Missbrauchsversuche an Sie. Falls Sie eine Sub-Domain zusätzlich absichern wollen (z.B. shop.ihre-domain.de), separate Records mit dem Sub-Domain-Namen statt @ anlegen — moderne CAs prüfen aber auch parent-CAA automatisch.

Wenn Sie Ihren Hoster nicht in der Liste finden: Schauen Sie das aktuell ausgestellte Zertifikat im Browser an (Schloss-Symbol → Zertifikat anzeigen → Aussteller). Dort steht der CA-Name (z.B. „Sectigo RSA Domain Validation Secure Server CA" → Wert sectigo.com). Den Wert als CAA-Record anlegen, fertig.

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

WordPress-Plugin: Die CAA-Records werden NICHT in WordPress angelegt, sondern im DNS-Panel Ihres Domain-Anbieters oder DNS-Providers (z.B. Hetzner-Robot, IONOS-Domains, Cloudflare-Dashboard, INWX, ns3.hajo-nolte.de etc.). Übliche Bezeichnung im DNS-Panel: „CAA-Record" oder unter „TXT-Records" mit Typ-Auswahl „CAA". Je CA ein separater Record.

✓ So prüfen Sie, ob es funktioniert: Auf https://www.ssllabs.com/ssltest/analyze.html?d=ihre-domain.de → Abschnitt „DNS CAA" → alle Ihre CAs sollten dort aufgelistet sein. Oder per dig: dig CAA ihre-domain.de.

2 Nameserver vorhanden — gute Redundanz.

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

SPF-Eintrag vorhanden: v=spf1 ip4:86.107.36.76 +mx +a +ip4:86.107.32.59/24 ~all — schützt vor E-Mail-Spoofing.

Kein DMARC-Eintrag. Die Domain ist anfällig für E-Mail-Phishing.

☛ Handlungsbedarf: Erstellen Sie einen DMARC-DNS-Eintrag unter _dmarc.ihredomain.de. DMARC schützt vor Phishing und E-Mail-Spoofing. Beispiel: v=DMARC1; p=quarantine; rua=mailto:dmarc@ihredomain.de
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

DMARC kombiniert SPF und DKIM zu einer expliziten Anweisung an empfangende Mail-Server: „Was tun, wenn E-Mails behaupten von uns zu kommen, aber SPF/DKIM scheitert?" Ohne DMARC entscheidet jeder Mail-Server selbst — meist großzügig. Mit DMARC=reject verhindern Sie wirksam Phishing in Ihrem Namen.

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

WordPress-Plugin: DNS-Sache. TXT-Eintrag bei Subdomain _dmarc.ihre-domain.de. Empfohlene Stufen: Beobachten erst: v=DMARC1; p=none; rua=mailto:dmarc-reports@ihre-domain.de — mehrere Wochen Berichte ansehen. Dann verschärfen: v=DMARC1; p=quarantine; rua=… — verdächtige Mails landen im Spam. Final: v=DMARC1; p=reject; rua=… — werden ganz abgewiesen.

✓ So prüfen Sie, ob es funktioniert: dig TXT _dmarc.ihre-domain.de — oder online https://dmarcian.com/dmarc-inspector/.

0 Sicherheitskontakt (security.txt)

Keine security.txt-Datei gefunden (RFC 9116). Sicherheitsforscher wissen nicht, wie sie Schwachstellen melden können.

☛ Handlungsbedarf: Erstellen Sie eine security.txt-Datei unter /.well-known/security.txt. Diese ermöglicht es Sicherheitsforschern, Schwachstellen verantwortungsvoll zu melden. Pflichtfelder: Contact (E-Mail oder URL) und Expires (Ablaufdatum).
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Eine security.txt (RFC 9116) sagt Sicherheitsforschern, wie sie Schwachstellen verantwortungsvoll an Sie melden können. Ohne diese Datei landen Hinweise vielleicht im Spam oder werden gar nicht erst geschickt. Eine reine Textdatei am korrekten Pfad genügt.

Apache-Server (klassisches Hosting bei den meisten Anbietern)

Datei: /.well-known/security.txt (Ordner anlegen, falls noch nicht vorhanden)

Contact: mailto:security@ihre-domain.de
Expires: 2027-12-31T23:59:59.000Z
Preferred-Languages: de, en
Canonical: https://ihre-domain.de/.well-known/security.txt

⚠ „security@ihre-domain.de" durch Ihre tatsächliche Sicherheitskontakt-Adresse ersetzen (oder eine generische wie info@). „Expires" muss ein zukünftiges Datum sein und sollte regelmäßig erneuert werden. Datei ist eine simple .txt-Datei, kein PHP.

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

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

Datei: Datei security.txt im Ordner /.well-known/ unter Ihrem WordPress-Root

Contact: mailto:security@ihre-domain.de
Expires: 2027-12-31T23:59:59.000Z
Preferred-Languages: de, en
Canonical: https://ihre-domain.de/.well-known/security.txt

⚠ Per FTP/SFTP einen Ordner ".well-known" im WordPress-Root anlegen (der Punkt am Anfang ist wichtig — bei manchen FTP-Programmen muss man „versteckte Dateien anzeigen" aktivieren), darin die Datei security.txt mit obigem Inhalt speichern. Falls WordPress die URL umleitet: in .htaccess ergänzen: RewriteRule ^\.well-known/ - [L]

WordPress-Plugin: Plugin „security.txt" (im Plugin-Verzeichnis suchen) ermöglicht die Konfiguration über das WordPress-Backend ohne FTP.

✓ So prüfen Sie, ob es funktioniert: https://ihre-domain.de/.well-known/security.txt im Browser aufrufen — Inhalt muss sichtbar sein (kein 404).

100 Externe Reporting-Endpunkte

Keine externen Reporting-Endpunkte erkannt.

70 Cookie-Einwilligung (Consent)

Cookie-Einwilligungssystem erkannt: cookieyes.com.

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: „Privacy Policy" (https://sterkyachts.com/datenschutzerklaerung/).

Impressum verlinkt: „Imprint" (https://sterkyachts.com/imprint/).

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. 6 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.

⚠ Wichtig bei Hetzner-Konsoleh-Webhosting (Managed-Hosting / Shared-Hosting)

Bei Hetzner-Konsoleh-Webhosting (und vergleichbaren Shared-Hostern wie All-Inkl, IONOS, Strato, 1blu, …) wirft Apache einen HTTP 500 Internal Server Error, sobald Header always edit Set-Cookie … expr=… in der .htaccess steht. Der Apache-Error-Log nennt es so:

Can't parse envclause/expression: syntax error, unexpected T_OP_STR_EQ, expecting $end

Das ist keine WebForensik-Fehlfunktion und kein Tippfehler — der Shared-Hoster hat das mod_headers-expr=-Subset per AllowOverride-Limit gesperrt (aus Sicherheitsgründen, weil Header edit auch Cookies anderer Anwender manipulieren könnte).

☛ Für Hetzner-Konsoleh-Nutzer: nehmen Sie unten die Variante mit dem roten „Hetzner / Shared"-Badge. Sie besteht aus zwei Dateien (.htaccess + wp-config.php) statt einer, vermeidet aber den 500-Fehler garantiert. Die Cookie-Flags landen dort in der wp-config.php, nicht in der .htaccess.

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 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"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=(), browsing-topics=()"

    # Fehlende Cookie-Flags konditional ergänzen (nur wenn nicht schon gesetzt)
    Header always edit Set-Cookie "^(.*)$" "$1; Secure" "expr=!(resp('Set-Cookie') -strmatch '*Secure*')"
    Header always edit Set-Cookie "^(.*)$" "$1; HttpOnly" "expr=!(resp('Set-Cookie') -strmatch '*HttpOnly*')"
    Header always edit Set-Cookie "^(.*)$" "$1; SameSite=Lax" "expr=!(resp('Set-Cookie') -strmatch '*SameSite*')"
</IfModule>

Hetzner / Shared Hetzner-Konsoleh / Managed-Hosting (zwei Dateien)

Diese Variante verhindert den 500 Internal Server Error auf Hetzner-Konsoleh und vergleichbaren Shared-Hostern (All-Inkl, IONOS, Strato, 1blu …): die .htaccess enthält NUR die Header-Direktiven (kein „Header edit"), die Cookie-Flags wandern in die wp-config.php. Zwei Dateien zu editieren statt einer, dafür garantiert lauffähig.

1. Datei: .htaccess im WordPress-Root
# BEGIN WebForensik Security
<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'; font-src 'self' https: data:; object-src 'none'; frame-ancestors 'self'; base-uri 'self'; upgrade-insecure-requests"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=(), browsing-topics=()"
</IfModule>
# END WebForensik Security
2. Datei: wp-config.php im WordPress-Root

OBERHALB der Zeile „/* That's all, stop editing! */" einfügen. Vorher Backup von wp-config.php anlegen!

// === WebForensik: Cookie-Hardening (Hetzner-Konsoleh-tauglich) ===
// Bitte OBERHALB der Zeile "/* That's all, stop editing! */" einfügen.
// Wirkt auf PHP-Session- und WordPress-Login-Cookies.
// Plugin-eigene Cookies (z.B. WooCommerce, Cookie-Banner) müssen in den
// Plugin-Einstellungen separat auf "Secure" gestellt werden.
@ini_set('session.cookie_secure',   '1');
@ini_set('session.cookie_httponly', '1');
@ini_set('session.cookie_samesite', 'Lax');
if (!defined('FORCE_SSL_ADMIN')) define('FORCE_SSL_ADMIN', true);

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 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"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=(), browsing-topics=()"

    # Fehlende Cookie-Flags konditional ergänzen
    Header always edit Set-Cookie "^(.*)$" "$1; Secure" "expr=!(resp('Set-Cookie') -strmatch '*Secure*')"
    Header always edit Set-Cookie "^(.*)$" "$1; HttpOnly" "expr=!(resp('Set-Cookie') -strmatch '*HttpOnly*')"
    Header always edit Set-Cookie "^(.*)$" "$1; SameSite=Lax" "expr=!(resp('Set-Cookie') -strmatch '*SameSite*')"
</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("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");
    header("X-Content-Type-Options: nosniff");
    header("Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=(), browsing-topics=()");
});

// Cookie-Flags für PHP-Session-Cookies — wirkt nur auf $_SESSION,
// NICHT auf von Plugins/Themes per setcookie() gesetzte Cookies.
// Für umfassende Cookie-Absicherung die .htaccess-Variante oben verwenden.
add_action('init', function () {
    if (headers_sent()) return;
    @ini_set('session.cookie_secure', '1');
    @ini_set('session.cookie_httponly', '1');
    @ini_set('session.cookie_samesite', 'Lax');
}, 1);
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
cache-control max-age=0
content-encoding br
content-type text/html; charset=UTF-8
date Wed, 05 Aug 2026 12:31:00 GMT
expires Wed, 05 Aug 2026 12:31:00 GMT
link <https://sterkyachts.com/wp-json/>; rel="https://api.w.org/", <https://sterkyachts.com/wp-json/wp/v2/pages/459>; rel="alternate"; title="JSON"; type="application/json", <https://sterkyachts.com/>; rel=shortlink
referrer-policy strict-origin-when-cross-origin
server Apache
set-cookie uncode_privacy[consent_types]=%5B%5D; expires=Thu, 05 Aug 2027 12:31:01 GMT; Max-Age=31536000; path=/; secure; SameSite=Strict
strict-transport-security max-age=31536000; includeSubDomains
vary Accept-Encoding
x-content-type-options nosniff nosniff
x-frame-options sameorigin
x-ua-compatible IE=edge
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=803" target="_blank" rel="noopener">
  <img src="https://webforensik.de/badge.php?id=803" 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://sterkyachts.com" target="_blank" rel="noopener">
  <img src="https://webforensik.de/badge.php?domain=sterkyachts.com" alt="WebForensik Score" width="174" height="28">
</a>