{
    "schema": "https://saferpage.de/schemas/operator-action-plan.v1",
    "generated_at": "2026-06-21T10:32:00+00:00",
    "domain": "mail.de",
    "scan": {
        "id": "50622b5d-0e14-4b1b-bcfc-f0a21e2e9109",
        "checked_at": "2026-06-19 18:12:11.996676+02"
    },
    "summary": "mail.de Betreiber-Board: 8 Nachweisposition(en), 2 sofort, 5 ausgelagerte Hintergrundseite(n). Nach jeder Umsetzung erneut scannen; bei hoher Priorität innerhalb von 7 Tagen.",
    "status": "sofort handeln",
    "score": 52,
    "metrics": {
        "ticket_count": 8,
        "open_count": 8,
        "urgent_count": 2,
        "guide_count": 5,
        "team_count": 2,
        "scan_score": 72,
        "target_score": 80,
        "gap_to_target": 8
    },
    "links": {
        "report": "https://saferpage.de/mail.de",
        "operator_board": "https://saferpage.de/betreiber/mail.de",
        "domain_verification": "https://saferpage.de/betreiber/mail.de/verifizierung",
        "release_gate": "https://saferpage.de/release-gate/mail.de",
        "audit_response": "https://saferpage.de/audit-response/mail.de",
        "trust_data_room": "https://saferpage.de/datenraum/mail.de",
        "json": "https://saferpage.de/betreiber/mail.de/massnahmen",
        "csv": "https://saferpage.de/betreiber/mail.de/massnahmen-csv",
        "tickets_markdown": "https://saferpage.de/betreiber/mail.de/tickets",
        "consent_evidence": "https://saferpage.de/consent/mail.de/nachweise",
        "vendor_service_cards": "https://saferpage.de/anbieter/mail.de/servicekarten",
        "trust_center": "https://saferpage.de/trust/mail.de",
        "guides": "https://saferpage.de/guides",
        "rescan": "https://saferpage.de/"
    },
    "tickets": [
        {
            "ticket_id": "SP-001",
            "title": "CSP erlaubt unsafe-inline für Skripte",
            "area": "BSI/Security-Header",
            "owner": "Technik",
            "team": "Developer/Ops",
            "priority": "hoch",
            "priority_score": 82,
            "sla": "7_tage",
            "status": "sofort_starten",
            "next_step": "Inline-Skripte über Nonces oder Hashes statt unsafe-inline freigeben.",
            "acceptance_criterion": "Security-Header/TLS-Check ist im Wiederholungsscan ohne kritischen Befund.",
            "evidence": "Inline-Skripte über Nonces oder Hashes statt unsafe-inline freigeben.",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "ticket_id": "SP-002",
            "title": "CSP erlaubt eval-nahe Skriptausführung",
            "area": "BSI/Security-Header",
            "owner": "Technik",
            "team": "Developer/Ops",
            "priority": "hoch",
            "priority_score": 82,
            "sla": "7_tage",
            "status": "sofort_starten",
            "next_step": "unsafe-eval aus script-src entfernen oder betroffene Bibliotheken ersetzen.",
            "acceptance_criterion": "Security-Header/TLS-Check ist im Wiederholungsscan ohne kritischen Befund.",
            "evidence": "unsafe-eval aus script-src entfernen oder betroffene Bibliotheken ersetzen.",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "ticket_id": "SP-003",
            "title": "Bilder ohne Alternativtext",
            "area": "Barrierefreiheit/Usability",
            "owner": "UX/Content",
            "team": "Content/UX",
            "priority": "mittel",
            "priority_score": 61,
            "sla": "30_tage",
            "status": "einplanen",
            "next_step": "Bilder brauchen verständliche Alternativtexte oder dekorative Kennzeichnung.",
            "acceptance_criterion": "Betroffener UI-Bereich ist per Tastatur bedienbar und automatisierter Accessibility-Check verbessert.",
            "evidence": "Bilder brauchen verständliche Alternativtexte oder dekorative Kennzeichnung.",
            "guide_url": "/guides/barrierefreiheit-cookie-banner-formulare"
        },
        {
            "ticket_id": "SP-004",
            "title": "Externe Skripte ohne Subresource Integrity",
            "area": "Skript-Lieferkette",
            "owner": "Technik",
            "team": "Developer/Ops",
            "priority": "mittel",
            "priority_score": 61,
            "sla": "30_tage",
            "status": "einplanen",
            "next_step": "Externe Skripte auf Notwendigkeit, SRI und lokale Auslieferung prüfen.",
            "acceptance_criterion": "Befund ist im Wiederholungsscan behoben oder fachlich dokumentiert begründet.",
            "evidence": "Externe Skripte auf Notwendigkeit, SRI und lokale Auslieferung prüfen.",
            "guide_url": "/guides/externe-skripte-und-sri-absichern"
        },
        {
            "ticket_id": "SP-005",
            "title": "CSP erlaubt sehr breite Skriptquellen",
            "area": "BSI/Security-Header",
            "owner": "Technik",
            "team": "Developer/Ops",
            "priority": "mittel",
            "priority_score": 53,
            "sla": "30_tage",
            "status": "einplanen",
            "next_step": "script-src auf konkrete HTTPS-Quellen begrenzen.",
            "acceptance_criterion": "Security-Header/TLS-Check ist im Wiederholungsscan ohne kritischen Befund.",
            "evidence": "script-src auf konkrete HTTPS-Quellen begrenzen.",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "ticket_id": "SP-006",
            "title": "CSP ohne object-src",
            "area": "BSI/Security-Header",
            "owner": "Technik",
            "team": "Developer/Ops",
            "priority": "mittel",
            "priority_score": 53,
            "sla": "30_tage",
            "status": "einplanen",
            "next_step": "object-src 'none' setzen.",
            "acceptance_criterion": "Security-Header/TLS-Check ist im Wiederholungsscan ohne kritischen Befund.",
            "evidence": "object-src 'none' setzen.",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "ticket_id": "SP-007",
            "title": "CSP ohne base-uri",
            "area": "BSI/Security-Header",
            "owner": "Technik",
            "team": "Developer/Ops",
            "priority": "mittel",
            "priority_score": 53,
            "sla": "30_tage",
            "status": "einplanen",
            "next_step": "base-uri 'self' oder 'none' setzen.",
            "acceptance_criterion": "Security-Header/TLS-Check ist im Wiederholungsscan ohne kritischen Befund.",
            "evidence": "base-uri 'self' oder 'none' setzen.",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "ticket_id": "SP-008",
            "title": "X-Frame-Options fehlt",
            "area": "BSI/Security-Header",
            "owner": "Technik",
            "team": "Developer/Ops",
            "priority": "mittel",
            "priority_score": 53,
            "sla": "30_tage",
            "status": "einplanen",
            "next_step": "Clickjacking-Schutz per Header setzen.",
            "acceptance_criterion": "Security-Header/TLS-Check ist im Wiederholungsscan ohne kritischen Befund.",
            "evidence": "Clickjacking-Schutz per Header setzen.",
            "guide_url": "/guides/security-header-setzen"
        }
    ],
    "tasks": [
        {
            "id": "",
            "title": "CSP erlaubt unsafe-inline für Skripte",
            "area": "BSI/Security-Header",
            "priority": "hoch",
            "priority_score": 82,
            "owner": "Technik",
            "team_route": "Developer/Ops",
            "deadline": "innerhalb von 7 Tagen",
            "effort": "mittel",
            "status": "offen",
            "action": "Inline-Skripte über Nonces oder Hashes statt unsafe-inline freigeben.",
            "evidence": "",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "id": "",
            "title": "CSP erlaubt eval-nahe Skriptausführung",
            "area": "BSI/Security-Header",
            "priority": "hoch",
            "priority_score": 82,
            "owner": "Technik",
            "team_route": "Developer/Ops",
            "deadline": "innerhalb von 7 Tagen",
            "effort": "mittel",
            "status": "offen",
            "action": "unsafe-eval aus script-src entfernen oder betroffene Bibliotheken ersetzen.",
            "evidence": "",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "id": "",
            "title": "Bilder ohne Alternativtext",
            "area": "Barrierefreiheit/Usability",
            "priority": "mittel",
            "priority_score": 61,
            "owner": "UX/Content",
            "team_route": "Content/UX",
            "deadline": "innerhalb von 30 Tagen",
            "effort": "niedrig",
            "status": "offen",
            "action": "Bilder brauchen verständliche Alternativtexte oder dekorative Kennzeichnung.",
            "evidence": "",
            "guide_url": "/guides/barrierefreiheit-cookie-banner-formulare"
        },
        {
            "id": "",
            "title": "Externe Skripte ohne Subresource Integrity",
            "area": "Skript-Lieferkette",
            "priority": "mittel",
            "priority_score": 61,
            "owner": "Technik",
            "team_route": "Developer/Ops",
            "deadline": "innerhalb von 30 Tagen",
            "effort": "niedrig",
            "status": "offen",
            "action": "Externe Skripte auf Notwendigkeit, SRI und lokale Auslieferung prüfen.",
            "evidence": "",
            "guide_url": "/guides/externe-skripte-und-sri-absichern"
        },
        {
            "id": "",
            "title": "CSP erlaubt sehr breite Skriptquellen",
            "area": "BSI/Security-Header",
            "priority": "mittel",
            "priority_score": 53,
            "owner": "Technik",
            "team_route": "Developer/Ops",
            "deadline": "innerhalb von 30 Tagen",
            "effort": "mittel",
            "status": "offen",
            "action": "script-src auf konkrete HTTPS-Quellen begrenzen.",
            "evidence": "",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "id": "",
            "title": "CSP ohne object-src",
            "area": "BSI/Security-Header",
            "priority": "mittel",
            "priority_score": 53,
            "owner": "Technik",
            "team_route": "Developer/Ops",
            "deadline": "innerhalb von 30 Tagen",
            "effort": "mittel",
            "status": "offen",
            "action": "object-src 'none' setzen.",
            "evidence": "",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "id": "",
            "title": "CSP ohne base-uri",
            "area": "BSI/Security-Header",
            "priority": "mittel",
            "priority_score": 53,
            "owner": "Technik",
            "team_route": "Developer/Ops",
            "deadline": "innerhalb von 30 Tagen",
            "effort": "mittel",
            "status": "offen",
            "action": "base-uri 'self' oder 'none' setzen.",
            "evidence": "",
            "guide_url": "/guides/security-header-setzen"
        },
        {
            "id": "",
            "title": "X-Frame-Options fehlt",
            "area": "BSI/Security-Header",
            "priority": "mittel",
            "priority_score": 53,
            "owner": "Technik",
            "team_route": "Developer/Ops",
            "deadline": "innerhalb von 30 Tagen",
            "effort": "mittel",
            "status": "offen",
            "action": "Clickjacking-Schutz per Header setzen.",
            "evidence": "",
            "guide_url": "/guides/security-header-setzen"
        }
    ],
    "guide_playbook": [
        {
            "slug": "seo-spam-und-cloaking-bereinigen",
            "title": "Seo Spam Und Cloaking Bereinigen",
            "guide_url": "/guides/seo-spam-und-cloaking-bereinigen",
            "area": "Trust & Content Integrity",
            "owner": "Webbetrieb/SEO/Security",
            "effort": "hoch",
            "retest": "Normaler Browser, SaferPage-Crawler und Suchmaschinenansicht vergleichen.",
            "evidence_required": "Bereinigter Code, Malware-/Plugin-Prüfung, Search-Console-Status.",
            "affected_count": 2,
            "task_count": 0,
            "ticket_count": 0,
            "priority_score": 100,
            "status": "sofort",
            "sample_findings": [
                {
                    "id": "external_link_spam",
                    "title": "Sehr viele externe Links erkannt",
                    "detail": "Prüfen, ob die Seite als Linkfarm, Affiliate-Brücke oder Spam-Seite dient.",
                    "source": "finding"
                },
                {
                    "id": "seo_integrity",
                    "title": "SEO-Integrität & Cloaking",
                    "detail": "Versteckte Inhalte, Canonical-Missbrauch und Googlebot-Abweichungen entfernen.",
                    "source": "module"
                }
            ]
        },
        {
            "slug": "security-header-setzen",
            "title": "Security Header Setzen",
            "guide_url": "/guides/security-header-setzen",
            "area": "Web Security",
            "owner": "IT/Security",
            "effort": "mittel",
            "retest": "Header, TLS, CSP und Referrer-Policy nach Deployment erneut scannen.",
            "evidence_required": "Nginx/Apache/CDN-Konfiguration, Header-Export, Rollback-Plan.",
            "affected_count": 22,
            "task_count": 6,
            "ticket_count": 6,
            "priority_score": 96,
            "status": "sofort",
            "sample_findings": [
                {
                    "id": "csp_unsafe_inline",
                    "title": "CSP erlaubt unsafe-inline für Skripte",
                    "detail": "Inline-Skripte über Nonces oder Hashes freigeben und unsafe-inline aus script-src entfernen.",
                    "source": "finding"
                },
                {
                    "id": "csp_unsafe_eval",
                    "title": "CSP erlaubt eval-nahe Skriptausführung",
                    "detail": "unsafe-eval vermeiden und betroffene Bibliotheken oder Build-Konfigurationen prüfen.",
                    "source": "finding"
                },
                {
                    "id": "csp_permissive_script_sources",
                    "title": "CSP erlaubt sehr breite Skriptquellen",
                    "detail": "script-src auf konkrete HTTPS-Hosts, Nonces oder Hashes begrenzen.",
                    "source": "finding"
                },
                {
                    "id": "csp_missing_object_src",
                    "title": "CSP ohne object-src",
                    "detail": "object-src 'none' setzen, wenn keine Plugins oder Objekte benötigt werden.",
                    "source": "finding"
                },
                {
                    "id": "csp_missing_base_uri",
                    "title": "CSP ohne base-uri",
                    "detail": "base-uri 'self' oder 'none' setzen, damit Base-Tag-Manipulation begrenzt wird.",
                    "source": "finding"
                }
            ]
        },
        {
            "slug": "externe-skripte-und-sri-absichern",
            "title": "Externe Skripte Und Sri Absichern",
            "guide_url": "/guides/externe-skripte-und-sri-absichern",
            "area": "Browser Supply Chain",
            "owner": "IT/Webentwicklung",
            "effort": "mittel",
            "retest": "Externe Skripte, SRI, CSP und Consent-Auslösung erneut prüfen.",
            "evidence_required": "Skriptinventar, SRI-Hashes, CSP-Report-Only-Test.",
            "affected_count": 3,
            "task_count": 1,
            "ticket_count": 1,
            "priority_score": 84,
            "status": "sprint",
            "sample_findings": [
                {
                    "id": "external_script_without_sri",
                    "title": "Externe Skripte ohne Subresource Integrity",
                    "detail": "Für statische CDN-Skripte `integrity` und passend `crossorigin` setzen oder Skripte kontrolliert lokal ausliefern.",
                    "source": "finding"
                },
                {
                    "id": "external_script_without_sri",
                    "title": "Externe Skripte ohne Subresource Integrity",
                    "detail": "Externe Skripte auf Notwendigkeit, SRI und lokale Auslieferung prüfen.",
                    "source": "task"
                },
                {
                    "id": "SP-004",
                    "title": "Externe Skripte ohne Subresource Integrity",
                    "detail": "Externe Skripte auf Notwendigkeit, SRI und lokale Auslieferung prüfen.",
                    "source": "ticket"
                }
            ]
        },
        {
            "slug": "barrierefreiheit-cookie-banner-formulare",
            "title": "Barrierefreiheit Cookie Banner Formulare",
            "guide_url": "/guides/barrierefreiheit-cookie-banner-formulare",
            "area": "Usability & BITV",
            "owner": "UX/Content/IT",
            "effort": "mittel",
            "retest": "Tastatur, Screenreader, Kontrast und Mobilansicht manuell prüfen.",
            "evidence_required": "Testprotokoll, Screenshots, bekannte Einschränkungen.",
            "affected_count": 4,
            "task_count": 1,
            "ticket_count": 1,
            "priority_score": 82,
            "status": "sprint",
            "sample_findings": [
                {
                    "id": "image_alt_missing",
                    "title": "Bilder ohne Alternativtext",
                    "detail": "Inhaltliche Bilder mit alt-Text versehen; dekorative Bilder mit leerem alt oder aria-hidden kennzeichnen.",
                    "source": "finding"
                },
                {
                    "id": "image_alt_missing",
                    "title": "Bilder ohne Alternativtext",
                    "detail": "Bilder brauchen verständliche Alternativtexte oder dekorative Kennzeichnung.",
                    "source": "task"
                },
                {
                    "id": "SP-003",
                    "title": "Bilder ohne Alternativtext",
                    "detail": "Bilder brauchen verständliche Alternativtexte oder dekorative Kennzeichnung.",
                    "source": "ticket"
                },
                {
                    "id": "accessibility_usability",
                    "title": "Barrierefreiheit & Usability",
                    "detail": "Alt-Texte, Formularlabels, Button-Namen, lang-Attribut und Überschriftenstruktur für Nutzer und Screenreader prüfen.",
                    "source": "module"
                }
            ]
        },
        {
            "slug": "performance-und-mobile-usability-verbessern",
            "title": "Performance Und Mobile Usability Verbessern",
            "guide_url": "/guides/performance-und-mobile-usability-verbessern",
            "area": "Performance & Mobile",
            "owner": "Webentwicklung/UX",
            "effort": "mittel",
            "retest": "Mobilansicht, Asset-Größen und Ladeverhalten erneut prüfen.",
            "evidence_required": "Performance-Messung, Asset-Liste, Mobile-Screenshot.",
            "affected_count": 1,
            "task_count": 0,
            "ticket_count": 0,
            "priority_score": 74,
            "status": "sprint",
            "sample_findings": [
                {
                    "id": "too_many_render_blocking_assets",
                    "title": "Viele potenziell blockierende Assets",
                    "detail": "Skripte/CSS bündeln, defer/async nutzen und kritisches CSS priorisieren.",
                    "source": "finding"
                }
            ]
        }
    ],
    "team_routing": {
        "Developer/Ops": 7,
        "Content/UX": 1
    },
    "retest_workflow": {
        "capture": "Scan-ID, Screenshot, Cookie-/Request-Zeilen und betroffene Hintergrundlinks sichern.",
        "implementation": "Konfigurationsdiff, CMS-/Tag-Manager-Änderung, Anbieterfreigabe oder Textversion dokumentieren.",
        "rescan": "Domain erneut prüfen und Position nur abschließen, wenn SaferPage-Befund behoben oder fachlich begründet ist.",
        "archive": "JSON/CSV/XLSX oder ZIP-Nachweispaket im Trust Center ablegen und intern freigeben."
    },
    "disclaimer": "Automatisch aus SaferPage-Evidenz abgeleiteter Betreiber-Arbeitsplan. Umsetzung, interne Verantwortlichkeiten und rechtliche Freigabe liegen beim Website-Betreiber."
}