API

Alle rapporter kan hentes som JSON, så I kan bygge scanningen ind i jeres egne dashboards, SIEM eller CI/CD. API'et er gratis og kræver ingen nøgle, men har rate limits.

Kør en fuld scanning

curl -s "https://securityconsulting.dk/scanner/api.php?action=scan&domain=firma.dk"

Kaldet er synkront og tager typisk 30–90 sekunder. Resultater for samme domæne genbruges i 10 minutter. Tilføj &fresh=1 for at tvinge en ny scanning. Grænse: 6 nye scanninger pr. time pr. IP.

Hent en eksisterende rapport

curl -s "https://securityconsulting.dk/scanner/api.php?action=report&id=<rapport-id>"

Svarformat (forkortet)

{
  "id": "9f3c…",
  "domain": "firma.dk",
  "grade": "B",
  "score": 81,
  "counts": { "critical": 0, "high": 1, "medium": 3, "low": 6, "info": 4, "pass": 12 },
  "priorities": [ { "id": "email.dmarc.none", "severity": "medium", "title": "…", "module": "email" } ],
  "nis2": { "g": { "label": "Art. 21(2)(g) – …", "open": 3, "ok": 5 } },
  "modules": {
    "email": {
      "score": 70, "grade": "C",
      "findings": [ {
        "id": "email.dmarc.none", "severity": "medium",
        "title": "…", "detail": "…", "fix": "…", "fix_code": "…",
        "nis2": ["g","j"], "cfcs": ["mail"], "evidence": null
      } ],
      "data": { "mx": […], "spf": […], "dmarc": […], "dkim": {…}, "dnssec": {…} }
    },
    "tls": {…}, "web": {…}, "subdomains": {…}, "lookalike": {…}, "exposure": {…}
  },
  "report_url": "https://securityconsulting.dk/scanner/report.php?id=9f3c…"
}

Eksempel: fejl i CI ved kritiske fund

crit=$(curl -s "https://securityconsulting.dk/scanner/api.php?action=scan&domain=firma.dk" | jq '.counts.critical + .counts.high')
[ "$crit" -eq 0 ] || { echo "Eksterne sikkerhedsfund: $crit"; exit 1; }

Stabile id'er

Fund-id'er som email.dmarc.none eller exposure.port.3389 er stabile på tværs af scanninger. Brug dem til at følge udviklingen og undertrykke accepterede risici i jeres egne værktøjer.

Brug for mere?

Højere grænser, aktiv scanning af hele IP-ranges eller et dedikeret dashboard: kontakt os.