Sicherheit (CSP)
Schützen Sie Ihre Kunden, indem Sie sicherstellen, dass sich Ihre Angebote nur dort öffnen lassen, wo Sie es erlauben.
Die Bedrohung durch Clickjacking
Könnte jede beliebige Webseite im Internet einfach ein <iframe> erstellen, das auf die privaten Angebote Ihrer Kunden zeigt, könnte ein Angreifer eine gefälschte, darübergelegte Seite bauen (UI Redressing oder Clickjacking) und einen Kunden dazu bringen, auf eine gefälschte Zahlungsschaltfläche zu klicken, die in Wirklichkeit die Schaltfläche „Bestätigen“ in Ihrem unsichtbaren Angebot auslöst.
Deshalb ist die Sicherheit von Cord Elements vom ersten Tag an streng.
Frame Ancestors und die Allowlist
Cord begegnet dieser Schwachstelle mit nativen HTTP-Headern, der sogenannten Content Security Policy (CSP). Konkret verwenden wir die Direktive frame-ancestors.
Damit das Installations-Snippet von Elements auf Ihrer Unternehmenswebsite funktioniert, müssen Sie zuerst Ihre Origins im Dashboard registrieren.
- Öffnen Sie Einstellungen › Einbettbarer Angebotsrechner im Bereich Entwickler des Verzeichnisses (er erscheint, wenn der Entwicklermodus unter Ihr Konto › Präferenzen aktiviert ist).
- Suchen Sie den Schritt Autorisierte Domains.
- Fügen Sie die Domains hinzu, jeweils in einer eigenen Zeile.
Gültige Beispiele
Das Domainsystem erlaubt exakte Origins oder Platzhalter (Wildcards):
your-company.com(erlaubt nur die Stammdomain).*.your-company.com(erlaubt die Stammdomain und jede Subdomain, zum Beispielapp.your-company.com).https://portal.your-company.com(sehr spezifisch).
Ohne Domains: nur lesen
Ist die Domainliste leer, kann jede Website das Angebot einbetten, aber nur zur Anzeige. Bestätigen, Signieren und Bezahlen werden im iframe nicht angeboten: Stattdessen erscheint eine Schaltfläche, die das Angebot in einem neuen Tab auf der Domain von Cord öffnet, wo keine fremde Website etwas darüberlegen kann. Die Ereignisse werden ohne detail gesendet (ohne Namen der signierenden Person und ohne Zahlungs-URL).
Sobald mindestens eine Domain registriert ist, schränkt frame-ancestors alle Vorfahren des iframes ein, und der Angebotsrechner ist interaktiv.
Ereignisse erreichen nur Ihren Origin
Das SDK hängt den Parameter parentOrigin (den window.location.origin Ihrer Seite) an die URL des iframes an. Stimmt er mit Ihrer Liste überein, sendet window.postMessage die Ereignisse ausschließlich an diesen Origin. Ohne Übereinstimmung bleibt das iframe durch frame-ancestors geschützt: Nur eine Seite Ihrer Domains kann in der Frame-Kette stehen.
Die Zahlung läuft nie im iframe
Die Zahlungsseite lässt sich in keinem Fall in einen Frame einbetten. Beim Bezahlen aus einem Embed öffnet Cord sie in einem eigenen Fenster, und das Ereignis cord:pay enthält ihre absolute URL. So laufen Kartendaten nie durch ein Dokument, das Ihre Website oder eine fremde überdecken könnte.
Schlüssel
- Publishable Key (
pk_live_): funktioniert nur, wenn erlaubte Domains konfiguriert sind. Ohne sie antwortet die API mitorigin_allowlist_required.pk_test_-Schlüssel funktionieren von jedem Origin aus, auch vonlocalhost. - Secret Key (
sk_): niemals in einem Browser. Kommt ein solcher Schlüssel aus einem Browser, antwortet die API mitsecret_key_in_browser, und Sie sollten ihn widerrufen: Er liegt bereits offen im Code der Seite.@flouviahq/nodeverweigert ebenfalls die Ausführung im Browser.