Deutsch | English Header-Test API Über WebForensik

WebForensik

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

Analysezeitpunkt: 2026-10-26 15:04:25

81

Gesamtbewertung

DSGVO-Zusammenfassung

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

DSGVO-Probleme erkannt (1):

❌ Keine Datenschutzerklärung gefunden — Pflicht nach Art. 13 DSGVO.

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:
95 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 2027-01-22).

Ausreichende Verschlüsselungsmethode (TLS_AES_128_GCM_SHA256, 128 Bit).

☛ Handlungsbedarf: Die Verschlüsselungsmethode ist ausreichend, aber nicht optimal. Bitten Sie Ihren Hoster, stärkere Cipher Suites zu konfigurieren.
80 Erzwungene Verschlüsselung (HSTS)

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

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

75 Content Security Policy (CSP)

Content Security Policy vorhanden (via HTTP-Header).

Skript-Quellen sind korrekt eingeschränkt.

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

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

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.

75 Berechtigungen (Kamera, Mikrofon etc.)

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

3 von 6 sensiblen APIs eingeschränkt. Mehr Einschränkungen empfohlen.

☛ Handlungsbedarf: Schränken Sie weitere sensible APIs ein. Empfohlen: camera=(), microphone=(), geolocation=(), payment=(), usb=(), interest-cohort=()
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Sie haben eine Permissions-Policy, aber nur wenige APIs eingeschränkt (3 von 6). Schränken Sie alle sensiblen APIs ein, die Sie nicht aktiv brauchen.

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=(), browsing-topics=()"
</IfModule>

⚠ Vorhandenen Eintrag ersetzen. Wenn Sie eine API tatsächlich brauchen: „(self)" statt „()".

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=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=(), browsing-topics=()"
</IfModule>

⚠ Bestehende Permissions-Policy ersetzen.

✓ So prüfen Sie, ob es funktioniert: F12 → Netzwerk → Response Header: vollständige Permissions-Policy-Zeile sichtbar.

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

Keine Cookies gesetzt — vorbildlich für den Datenschutz.

70 Lokaler Speicher (Web Storage)

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

localStorage

NameWert
msh-app-installed 0
100 Drittanbieter-Anfragen

Keine Drittanbieter-Anfragen erkannt — alle Inhalte kommen vom eigenen Server.

100 Tracker-Erkennung

Keine bekannten Tracker erkannt.

100 Externe Ressourcen-Integrität (SRI)

Keine externen Skripte oder Stylesheets geladen.

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

3 Nameserver vorhanden — gute Redundanz.

Keine IPv6-Unterstützung (kein AAAA-Eintrag).

☛ Handlungsbedarf: Aktivieren Sie IPv6-Unterstützung (AAAA-Einträge) für Ihre Domain. Immer mehr Nutzer verwenden IPv6.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Ihre Domain hat keine IPv6-Adresse (AAAA-Eintrag). Über 40% aller deutschen Internetnutzer sind über IPv6 unterwegs (Mobilfunk vor allem) — die müssen dann den Umweg über IPv4-Gateways nehmen, was langsamer ist.

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

WordPress-Plugin: Reine DNS+Server-Sache. Schritt 1: prüfen, ob Ihr Hoster eine IPv6-Adresse für Sie hat (im Kundenpanel oder per Support-Anfrage). Schritt 2: im DNS-Panel einen AAAA-Eintrag mit dieser IPv6 anlegen. Schritt 3: testen.

✓ So prüfen Sie, ob es funktioniert: dig AAAA ihre-domain.de — oder online https://ipv6-test.com/validate.php?url=ihre-domain.de.

SPF-Eintrag vorhanden: v=spf1 a mx +include:spf.raiolanetworks.com -all — schützt vor E-Mail-Spoofing.

DMARC-Eintrag vorhanden: v=DMARC1; p=quarantine; sp=quarantine; rf=afrf; pct=100; ri=86400;rua=mailto:dmarc@myspecialhair.com — E-Mail-Authentifizierung aktiv.

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.

80 Cookie-Einwilligung (Consent)

Kein Consent-Banner nötig — keine Tracker oder Drittanbieter-Cookies erkannt.

0 Datenschutzerklärung & Impressum

Keine Datenschutzerklärung gefunden! Pflicht nach Art. 13 DSGVO.

☛ Handlungsbedarf: Erstellen Sie eine Datenschutzerklärung und verlinken Sie diese gut sichtbar auf jeder Seite (z.B. im Footer). Pflichtinhalte nach Art. 13 DSGVO: Verantwortlicher, Kontaktdaten, Zweck und Rechtsgrundlage der Verarbeitung, Empfänger, Speicherdauer, Betroffenenrechte.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Keine Datenschutzerklärung gefunden — Pflicht nach Art. 13 DSGVO. Bei Verstößen drohen Abmahnungen und Bußgelder. Die Datenschutzerklärung muss von JEDER Seite aus mit einem Klick erreichbar sein (üblich: Footer-Link).

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

WordPress-Plugin: Schritt 1: Datenschutzerklärung erstellen. Generatoren (juristisch geprüft): https://datenschutz-generator.de (Dr. Schwenke, kostenlos), https://www.e-recht24.de/muster-datenschutzerklaerung.html (Premium-Service kostenpflichtig). Pflichtinhalte u.a.: Name+Anschrift Verantwortlicher, Datenschutzbeauftragter (falls vorhanden), Zweck und Rechtsgrundlage jeder Datenverarbeitung, Empfänger/Drittlandtransfers, Speicherdauer, Betroffenenrechte, Beschwerderecht bei Aufsichtsbehörde. Schritt 2: in WordPress: Seiten → Erstellen → Inhalt einfügen → Veröffentlichen. Schritt 3: unter Einstellungen → Datenschutz die Seite als „Datenschutzseite" markieren. Schritt 4: Footer-Menü erstellen (Design → Menüs → neues Menü → der Position „Footer" zuordnen) und Datenschutzerklärung verlinken.

✓ So prüfen Sie, ob es funktioniert: Von der Startseite: nach unten scrollen → Footer → Link „Datenschutz" oder „Datenschutzerklärung" sichtbar → klick → öffnet die Erklärung. Funktioniert von ALLEN Seiten der Website.

Kein Impressum gefunden — Pflicht nach § 5 DDG (ehemals TMG).

☛ Handlungsbedarf: Erstellen Sie ein Impressum und verlinken Sie es gut sichtbar. Pflicht nach § 5 DDG für geschäftsmäßige Websites. Pflichtangaben: Name, Anschrift, E-Mail, ggf. Handelsregister und USt-IdNr.
▸ So beheben Sie das — Schritt-für-Schritt-Anleitung

Kein Impressum gefunden — Pflicht nach § 5 DDG (Digitale-Dienste-Gesetz, vormals TMG) für alle geschäftsmäßigen Websites. Selbst rein private Blogs mit Werbeeinblendungen oder Affiliate-Links sind in der Regel impressumspflichtig. Bei Verstößen: Abmahnungen sind sehr verbreitet.

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

WordPress-Plugin: Schritt 1: Impressum erstellen. Generator (kostenlos): https://www.e-recht24.de/impressum-generator.html. Pflichtangaben u.a.: Name (vollständig), Anschrift (Postfach reicht NICHT), Telefon ODER andere zweite Kontaktmöglichkeit, E-Mail, bei Firmen: Handelsregister + USt-IdNr, ggf. Aufsichtsbehörde, ggf. Berufshaftpflicht. Schritt 2: in WordPress → Seiten → Erstellen → Titel „Impressum" → veröffentlichen. Schritt 3: Footer-Menü → Eintrag „Impressum" hinzufügen. WICHTIG: Impressum muss „leicht erkennbar, unmittelbar erreichbar und ständig verfügbar" sein — ein Footer-Link erfüllt das, ein „über uns" → „dort dann impressum" NICHT.

✓ So prüfen Sie, ob es funktioniert: Footer auf jeder Seite → Link „Impressum" sichtbar → öffnet die Impressums-Seite mit allen Pflichtangaben.

⚙ Ihre fertige Security-htaccess

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

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 Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=(), browsing-topics=()"
</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 Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=(), browsing-topics=()"
</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("Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), accelerometer=(), gyroscope=(), magnetometer=(), interest-cohort=(), browsing-topics=()");
});
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
access-control-allow-origin *
age 0
cache-control public, max-age=0, must-revalidate
content-disposition inline
content-encoding br
content-security-policy default-src 'self'; base-uri 'none'; object-src 'none'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'wasm-unsafe-eval'; script-src-attr 'none'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://myspecialhair.com https://*.public.blob.vercel-storage.com; font-src
content-type text/html; charset=utf-8
date Mon, 26 Oct 2026 14:04:20 GMT
etag W/"43f23191358c54c3dbe234ead26881fa"
last-modified Mon, 26 Oct 2026 14:04:20 GMT
permissions-policy camera=(self), microphone=(), geolocation=()
referrer-policy strict-origin-when-cross-origin
server Vercel
strict-transport-security max-age=63072000
x-content-type-options nosniff
x-frame-options SAMEORIGIN
x-vercel-cache MISS
x-vercel-id fra1::v96rc-1793023460329-2251ab1adf15

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=3309" target="_blank" rel="noopener">
  <img src="https://webforensik.de/badge.php?id=3309" 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://myspecialhair.com" target="_blank" rel="noopener">
  <img src="https://webforensik.de/badge.php?domain=myspecialhair.com" alt="WebForensik Score" width="174" height="28">
</a>