{
    "id": "20260624-164017-platform.djswiss.ch-c809a8d4",
    "type": "scan_report",
    "created_at": "2026-06-24T16:40:17+00:00",
    "scan": {
        "tool": "DJSWISS Safe Site Checker Pro",
        "version": "3.0-sales-ready",
        "mode": "defensive_passive_authorized",
        "started_at": "2026-06-24T16:40:16+00:00",
        "finished_at": "2026-06-24T16:40:17+00:00",
        "target": {
            "input_url": "https://platform.djswiss.ch/",
            "normalized_url": "https://platform.djswiss.ch/",
            "effective_url": "https://platform.djswiss.ch/",
            "host": "platform.djswiss.ch",
            "http_status": 200
        },
        "score": {
            "points": 67,
            "grade": "C"
        },
        "summary": {
            "critical": 0,
            "high": 0,
            "medium": 3,
            "low": 3,
            "info": 8
        },
        "meta": {
            "dns_targets": [
                "148.251.1.89"
            ],
            "http_redirect_effective_url": "http://platform.djswiss.ch/",
            "tls": {
                "subject": "platform.djswiss.ch",
                "issuer": "Let's Encrypt",
                "valid_to": "2026-09-05T03:55:27+00:00",
                "days_left": 72
            },
            "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": "low",
                "category": "Niedrig",
                "title": "HTTP leitet nicht sauber auf HTTPS um",
                "evidence": "HTTP Effective URL: http://platform.djswiss.ch/",
                "fix": "HTTP VirtualHost auf 301/308 Redirect zu HTTPS setzen."
            },
            {
                "severity": "medium",
                "category": "Mittel",
                "title": "HSTS fehlt",
                "evidence": "Strict-Transport-Security Header nicht gefunden",
                "fix": "Header setzen: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload nur nach Prüfung."
            },
            {
                "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": "medium",
                "category": "Mittel",
                "title": "Clickjacking-Schutz fehlt",
                "evidence": "Kein X-Frame-Options und kein CSP frame-ancestors gefunden",
                "fix": "CSP frame-ancestors oder X-Frame-Options setzen."
            },
            {
                "severity": "low",
                "category": "Niedrig",
                "title": "X-Content-Type-Options fehlt",
                "evidence": "nosniff nicht gesetzt",
                "fix": "Header setzen: X-Content-Type-Options: nosniff"
            },
            {
                "severity": "low",
                "category": "Niedrig",
                "title": "Referrer-Policy fehlt",
                "evidence": "Referrer-Policy Header nicht gefunden",
                "fix": "Header setzen, z.B. strict-origin-when-cross-origin oder no-referrer."
            },
            {
                "severity": "info",
                "category": "Info",
                "title": "Permissions-Policy fehlt",
                "evidence": "Permissions-Policy Header nicht gefunden",
                "fix": "Nicht benötigte Browser-Features explizit deaktivieren."
            },
            {
                "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": "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."
            },
            {
                "severity": "info",
                "category": "Info",
                "title": "security.txt fehlt",
                "evidence": "https://platform.djswiss.ch/.well-known/security.txt nicht gefunden",
                "fix": "Optional security.txt veröffentlichen, damit Sicherheitsmeldungen korrekt ankommen."
            },
            {
                "severity": "info",
                "category": "Info",
                "title": "robots.txt fehlt",
                "evidence": "https://platform.djswiss.ch/robots.txt nicht gefunden",
                "fix": "Optional robots.txt veröffentlichen, besonders wenn SEO relevant ist."
            },
            {
                "severity": "info",
                "category": "Info",
                "title": "sitemap.xml fehlt",
                "evidence": "https://platform.djswiss.ch/sitemap.xml nicht gefunden",
                "fix": "Optional sitemap.xml veröffentlichen, wenn SEO relevant ist."
            }
        ],
        "recommendations": [
            "Hardening in geplanter Wartung umsetzen.",
            "Nachher-Bericht erstellen und Differenz dokumentieren."
        ],
        "sales_hint": {
            "package": "Website Hardening Basic",
            "suggested_price_chf": "390–790",
            "reason": "Mehrere Hardening-Punkte mit überschaubarem Aufwand."
        },
        "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
}