Skip to content
SEO Optimizer is live, Audit on page SEO and AI-search readiness. Try it free
Slack, Teams & Webhooks

Anleitungen

Benachrichtigungen an Slack, Teams und Webhooks

Senden Sie Scanverra-Benachrichtigungen an einen Slack-Kanal, einen Microsoft-Teams-Kanal oder Ihren eigenen HTTPS-Endpunkt, damit Ihr Team von einem Punkteverlust oder einer riskanten Änderung dort erfährt, wo es ohnehin arbeitet.

Team- und Enterprise-Tarif. Team-Inhaber und Admins richten das unter Team, dann Integrationen ein. Ein Team kann bis zu 10 Integrationen haben.

So funktioniert es

  1. 1Öffnen Sie Team, dann Integrationen, und fügen Sie Slack, Microsoft Teams oder einen Webhook hinzu.
  2. 2Wählen Sie die Benachrichtigungen aus, die ankommen sollen, und klicken Sie auf Test senden, um zu prüfen, ob die Nachricht ankommt.
  3. 3Sobald ein geplanter Scan oder eine Überwachung etwas findet, sendet Scanverra die Benachrichtigung direkt nach Abschluss des Laufs.

Scans, die jemand von Hand startet, senden keine Benachrichtigungen. Planen Sie die Websites und Repositories, die überwacht werden sollen, auf der Seite Geplante Scans.

Verfügbare Benachrichtigungen

Jede Integration erhält nur die Benachrichtigungen, die Sie auswählen. Bei einem Webhook steht der Ereignisname im Header X-Scanverra-Event und im Feld event.

scan.score_droppedEin geplanter Scan mehr als 10 Punkte unter seinem vorherigen Lauf liegt. Die Benachrichtigung listet auf, was neu ist.
scan.completedEin geplanter Scan mit einem Ergebnis abschließt.
scan.policy_failedEnterpriseEin geplanter Scan Ihre Team-Richtlinie nicht erfüllt (Mindestpunktzahl oder keine kritischen Befunde). Die Benachrichtigung nennt die Gründe.
payment_page.scripts_changedEnterpriseEine überwachte Zahlungsseite ein neues oder geändertes Skript lädt oder sich ihre Content-Security-Policy ändert.
attack_surface.changedEnterpriseEine überwachte Domain einen neuen Host erhält oder ein Host übernommen werden könnte.
testJemand auf Test senden klickt.

Slack verbinden

  1. 1Öffnen Sie in Slack Apps, suchen Sie Incoming Webhooks und fügen Sie es dem Kanal hinzu, der die Benachrichtigungen erhalten soll.
  2. 2Kopieren Sie die Webhook-URL. Sie beginnt mit https://hooks.slack.com/.
  3. 3Fügen Sie in Scanverra eine Integration hinzu, wählen Sie Slack, fügen Sie die URL ein und wählen Sie Ihre Benachrichtigungen.

Jede Benachrichtigung zeigt die Überschrift, bis zu fünf neue Probleme und eine Schaltfläche „Open report“.

Microsoft Teams verbinden

  1. 1Öffnen Sie im Teams-Kanal Workflows und wählen Sie In einem Kanal posten, wenn eine Webhook-Anforderung empfangen wird.
  2. 2Schließen Sie den Workflow ab und kopieren Sie die angezeigte URL.
  3. 3Fügen Sie in Scanverra eine Integration hinzu, wählen Sie Microsoft Teams, fügen Sie die URL ein und wählen Sie Ihre Benachrichtigungen.

Jede Benachrichtigung kommt als Karte mit Überschrift, den neuen Problemen und einer Schaltfläche „Open report“.

Webhooks

Mit einem Webhook senden Sie Benachrichtigungen überallhin: ein Ticket eröffnen, die Bereitschaft alarmieren oder sie speichern. Scanverra sendet pro Benachrichtigung einen HTTPS-POST mit JSON-Inhalt.

Request-Header

Content-TypeImmer application/json.
User-AgentWeist Scanverra als Absender aus.Scanverra-Alerts/1.0
X-Scanverra-EventDer Ereignisname, identisch mit dem Feld event im Inhalt.scan.score_dropped
X-Scanverra-TimestampZeitpunkt der Signierung, in Unix-Sekunden.1762594212
X-Scanverra-Signaturesha256= gefolgt vom HMAC-SHA256 aus Zeitstempel, einem Punkt und dem unveränderten Inhalt, mit Ihrem Signaturgeheimnis als Schlüssel.sha256=9f2c…

Request-Inhalt

Ein Beispiel für einen Punkteverlust:

{
  "event": "scan.score_dropped",
  "sentAt": "2026-11-08T09:30:12.418Z",
  "summary": "Security Scan score dropped from 81 to 62 for shop.example.com",
  "data": {
    "target": "https://shop.example.com",
    "scanType": "security",
    "score": 62,
    "prevScore": 81,
    "reportUrl": "https://www.scanverra.com/security-scan/cm9x2k1",
    "newIssues": [
      "Missing Content-Security-Policy header",
      "jQuery 3.4.1 has known vulnerabilities"
    ]
  }
}

Felder

eventDer Ereignisname.
sentAtWann die Benachrichtigung gesendet wurde (ISO 8601).
summaryEine einzeilige Beschreibung, die Sie direkt anzeigen können.
data.targetDie gescannte URL, die Domain oder owner/repo bei einem Repository.
data.scanTypeaudit, seo, security, browser, repo oder crawl (ein SEO-Crawl über mehrere Seiten).
data.scoreDie neue Punktzahl von 0 bis 100, oder null, wenn die Benachrichtigung keine Punktzahl hat (Überwachungen und Tests).
data.prevScoreDie Punktzahl des vorherigen Laufs, oder null.
data.reportUrlEin Link zum Bericht oder zur Überwachung.
data.newIssuesKurze Zeilen, die beschreiben, was sich geändert hat. Kann leer sein oder fehlen.

Signatur prüfen

Wenn Sie einen Webhook hinzufügen, zeigt Scanverra sein Signaturgeheimnis (whsec_...) einmalig an. Speichern Sie es auf Ihrem Server und prüfen Sie jede Anfrage, bevor Sie ihr vertrauen:

  1. 1Lesen Sie den Request-Inhalt genau so, wie er angekommen ist, vor jedem JSON-Parsing.
  2. 2Berechnen Sie den HMAC-SHA256 aus dem Zeitstempel-Header, einem Punkt und dem unveränderten Inhalt, mit dem Geheimnis als Schlüssel.
  3. 3Vergleichen Sie ihn in konstanter Zeit mit dem Signatur-Header und lehnen Sie Anfragen ab, deren Zeitstempel älter als 5 Minuten ist.
import crypto from "node:crypto";
import express from "express";

const SECRET = process.env.SCANVERRA_WEBHOOK_SECRET; // whsec_...
const app = express();

// express.raw keeps the exact bytes Scanverra signed.
app.post("/scanverra", express.raw({ type: "application/json" }), (req, res) => {
  const timestamp = req.get("X-Scanverra-Timestamp") ?? "";
  const signature = req.get("X-Scanverra-Signature") ?? "";
  const expected = "sha256=" + crypto
    .createHmac("sha256", SECRET)
    .update(`${timestamp}.${req.body}`)
    .digest("hex");

  const fresh = Math.abs(Date.now() / 1000 - Number(timestamp)) <= 300;
  const valid = signature.length === expected.length &&
    crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
  if (!fresh || !valid) return res.sendStatus(401);

  const alert = JSON.parse(req.body);
  console.log(alert.event, alert.summary);
  res.sendStatus(204); // answer fast, do slow work afterwards
});

app.listen(3000);

Weil der Zeitstempel mitsigniert wird, kann eine abgefangene Anfrage später nicht erneut abgespielt werden.

Zustellregeln

  • Antworten Sie innerhalb von 5 Sekunden mit einem beliebigen 2xx-Status. Erledigen Sie langsame Arbeit nach der Antwort.
  • Jede Benachrichtigung wird einmal gesendet und nicht wiederholt. Der Bereich Integrationen zeigt, ob die letzte Zustellung geklappt hat.
  • Weiterleitungen werden nicht verfolgt, verwenden Sie also die endgültige URL.
  • Es werden nur öffentliche HTTPS-Adressen akzeptiert. Slack-URLs müssen auf hooks.slack.com liegen, Teams-URLs auf webhook.office.com oder Power Automate.
  • Die Benachrichtigungen enden für das ganze Team, wenn sein Team- oder Enterprise-Tarif ausläuft.
Behandeln Sie Webhook-URLs und Signaturgeheimnisse wie Passwörter. Wer eine Slack- oder Teams-URL hat, kann in diesem Kanal posten. Scanverra zeigt eine gespeicherte URL nur teilweise verdeckt an. Um ein Geheimnis zu ändern, entfernen Sie die Integration und fügen Sie sie neu hinzu.

Bereit zum Verbinden?

Team-Inhaber und Admins fügen eine Integration in einer Minute hinzu. Senden Sie vor der ersten echten Benachrichtigung einen Test.

Integrationen öffnen