Boleh kami bantu?

Terangkan ringkas perkara ini – kami akan menghubungi Anda melalui e-mel.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Ke halaman utama

Sicherheit und Content-Security-Policy

Welche Einträge deine Content-Security-Policy für das Widget braucht, warum es ohne Inline-Skript und ohne unsafe-inline auskommt, wie es von deiner Seite isoliert ist und welche Geheimnisse nie in den Browser gehören.

Die Content-Security-Policy

Das Widget lädt keine fremden Schriften, kein Zählpixel und führt kein eval aus. Seine Stile setzt es über konstruierbare Stylesheets (adoptedStyleSheets) im Shadow DOM; sie fallen nicht unter style-src. Du brauchst deshalb kein unsafe-inline und kein unsafe-eval.

Mit den Adressen von reactive.chat:

Content-Security-Policy:
  script-src 'self' https://cdn.reactive.chat;
  connect-src 'self' wss://ws.reactive.chat https://ws.reactive.chat;
  img-src 'self' data: https:;

Mit eigener Domain:

Content-Security-Policy:
  script-src 'self' https://chat.deine-firma.de;
  connect-src 'self' wss://chat.deine-firma.de https://chat.deine-firma.de;
  img-src 'self' data: https:;

Die einzelnen Einträge:

Ältere Browser ohne konstruierbare Stylesheets (etwa Safari vor 16.4) fallen auf ein <style>-Element zurück, das eine strenge style-src blockiert. Das Widget funktioniert dort, ist aber ungestaltet.

Kein Inline-Skript nötig

Der Einbau besteht nur aus einem <script src> mit Attributen. Eigene Aufrufe (identify, track, open) gehören in deine eigenen Skriptdateien oder in ein Inline-Skript mit Nonce:

<script nonce="R4nd0mN0nc3">
  ReactiveChat('identify', { userId: '4711', userHash: '…', exp: 1792503600 });
</script>

Eine Vorlage ohne Inline-Skript steht unter Besucher identifizieren.

Subresource Integrity

loader.js trägt keine Versionsnummer im Namen und wird laufend aktualisiert; ein integrity-Attribut würde den Chat beim nächsten Update stilllegen. Der Kern wird mit Inhalts-Hash im Namen nachgeladen (Architektur). Wenn deine Richtlinie SRI verlangt, liefere loader.js selbst aus und setze data-rc-ws-url (Schnellstart) – du übernimmst dann aber auch das Aktualisieren.

Isolation von deiner Seite

Herkunftsprüfung

Die Chat-Verbindung wird nur von den Domains angenommen, die im Projekt unter Erlaubte Herkünfte stehen (Subdomains eingeschlossen). Eine fremde Seite, die deinen Site-Key kopiert, bekommt origin_denied. Ist die Liste leer, findet keine Prüfung statt – trag deine Domains deshalb immer ein. Details unter Transport.

Der Site-Key selbst ist kein Geheimnis; er steht in jedem Seitenquelltext.

Was nie in den Browser gehört

Auch nicht in eine App, ein öffentliches Repository oder die Adresse einer Seite.

Missbrauchsschutz

Der Server begrenzt Verbindungen, Rahmen und Nachrichten je Verbindung und je Adresse und sperrt bei wiederholten Verstößen (Close 1008). Hinter einem eigenen Proxy zählt er je Besucheradresse nur, wenn der Proxy-Schlüssel stimmt – sonst teilen sich alle Besucher die Adresse des Proxys. Zahlen unter Grenzen und Quoten.

Weiter: Eigene Domain

Kemas kini terakhir: