{
    "id": "20260624-170504-mail.djswiss.ch-d533ca74",
    "type": "scan_report",
    "created_at": "2026-06-24T17:05:04+00:00",
    "scan": {
        "tool": "DJSWISS Safe Site Checker Pro",
        "version": "3.0-sales-ready",
        "mode": "defensive_passive_authorized",
        "started_at": "2026-06-24T17:05:04+00:00",
        "finished_at": "2026-06-24T17:05:04+00:00",
        "target": {
            "input_url": "https://mail.djswiss.ch/",
            "normalized_url": "https://mail.djswiss.ch/",
            "effective_url": "https://mail.djswiss.ch/",
            "host": "mail.djswiss.ch",
            "http_status": 200
        },
        "score": {
            "points": 77,
            "grade": "B"
        },
        "summary": {
            "critical": 0,
            "high": 1,
            "medium": 1,
            "low": 0,
            "info": 4
        },
        "meta": {
            "dns_targets": [
                "148.251.1.89"
            ],
            "http_redirect_effective_url": "https://mail.djswiss.ch/",
            "tls": {
                "subject": "mail.djswiss.ch",
                "issuer": "Let's Encrypt",
                "valid_to": "2026-09-19T20:35:46+00:00",
                "days_left": 87
            },
            "dns": {
                "txt": [
                    "v=spf1 mx ip4:148.251.1.89 ip4:148.251.1.79 -all"
                ],
                "dmarc": "v=DMARC1; p=quarantine; rua=mailto:postmaster@djswiss.ch; ruf=mailto:postmaster@djswiss.ch; fo=1",
                "mx": [],
                "caa_count": 0
            }
        },
        "findings": [
            {
                "severity": "medium",
                "category": "Mittel",
                "title": "Content-Security-Policy fehlt",
                "evidence": "CSP Header nicht gefunden",
                "fix": "CSP schrittweise einführen; zuerst Report-Only testen, danach strenger aktivieren."
            },
            {
                "severity": "info",
                "category": "Info",
                "title": "Cross-Origin-Opener-Policy fehlt",
                "evidence": "COOP Header nicht gefunden",
                "fix": "Optional: Cross-Origin-Opener-Policy: same-origin für isolierte Browser-Kontexte prüfen."
            },
            {
                "severity": "info",
                "category": "Info",
                "title": "Technologie-Information sichtbar: server",
                "evidence": "Apache",
                "fix": "Versionen und Framework-Banner soweit möglich ausblenden; wichtiger: Systeme aktuell halten."
            },
            {
                "severity": "high",
                "category": "Hoch",
                "title": "Fehlermeldungen im HTML sichtbar",
                "evidence": "Debug-/PHP-/Stacktrace-Hinweise gefunden",
                "fix": "Debug-Ausgaben deaktivieren; Fehler serverseitig loggen, nicht öffentlich anzeigen."
            },
            {
                "severity": "info",
                "category": "Info",
                "title": "Keine MX Records gefunden",
                "evidence": "djswiss.ch",
                "fix": "Falls die Domain E-Mail empfängt, MX Records prüfen."
            },
            {
                "severity": "info",
                "category": "Info",
                "title": "CAA Record fehlt",
                "evidence": "djswiss.ch",
                "fix": "Optional CAA setzen, um Zertifizierungsstellen einzuschränken."
            }
        ],
        "recommendations": [
            "Hohe Risiken kurzfristig beheben und danach erneut scannen.",
            "Security-Header und exponierte Dateien priorisieren."
        ],
        "sales_hint": {
            "package": "Emergency Fix / Security Hardening",
            "suggested_price_chf": "590–1’500+",
            "reason": "Akute oder deutliche Risiken vorhanden."
        },
        "note": "This tool identifies visible weaknesses and safe fix guidance. It does not exploit, bypass authentication, brute-force, or provide intrusion steps."
    },
    "ai": null,
    "report_text": null
}