Hilfe
Schlüssel und Sicherheit
Wie Samy mit deinem Schlüssel umgeht und was du selbst beachten solltest.
Der Schlüssel ist das Einzige, was dein Tool von allen anderen unterscheidet. Wer ihn hat, kann in deinem Kanal Nachrichten schicken. Diese Seite sagt, wie Samy ihn schützt und was du selbst tun solltest.
Der Schlüssel
| Format | samy_ und dahinter 32 Buchstaben und Ziffern |
| Gilt für | genau ein Packlet |
| Sichtbar | einmal, direkt nach dem Erzeugen. Danach zeigt die App ihn nur noch maskiert. |
| Gespeichert bei Samy | nur als SHA-256-Hash. Den Klartext kennt Samy danach nicht mehr. |
Mit dem Schlüssel lässt sich nur schicken: Nachrichten und die Adresse der Seite einer App. Nachrichten lesen, andere Packlets sehen oder dein Konto ändern kann man damit nicht.
Was vom Schlüssel abhängt
Aus dem Schlüssel entsteht auch das Geheimnis, mit dem Samy zwei Dinge unterschreibt:
- die Webhook-Ereignisse an dein Tool,
- die Session-Tokens für die Seite einer App.
Dein Tool braucht dafür nichts Zusätzliches. Es bildet das Geheimnis selbst aus SAMY_KEY.
Was du beachten solltest
- Umgebungsvariable statt Code. Leg den Schlüssel in
SAMY_KEYab, nicht im Quelltext und nicht im Repository. Eine.env-Datei gehört in die.gitignore. - Ein Packlet pro Tool. So tauschst du einen einzelnen Schlüssel, ohne dass andere Tools ausfallen, und siehst im Protokoll, welches Tool was geschickt hat.
- Nie in eine Webseite. Bei einer App bleibt der Schlüssel auf deinem Server. Was im HTML oder JavaScript steht, kann jeder lesen.
- Signatur immer prüfen. Deine Webhook-Adresse ist öffentlich. Führ nichts aus, bevor die Signatur stimmt.
- Wiederholungen erkennen. Darf etwas nicht doppelt passieren, prüf nach der Signatur auch
timestampundevent_id: Schutz vor Wiederholung. - Eingaben bleiben Eingaben. Texte aus dem Chat und aus Eingabefeldern kommen von außen. Reich sie nicht ungeprüft an eine Shell, eine Datenbankabfrage oder als Anweisung an eine KI mit weitreichenden Rechten weiter.
- Session-Token ganz prüfen. Signatur, Ablauf und
aud, bevor deine Seite private Daten zeigt. - Einbetten regeln. Fremde iframes in deiner Seite mit
sandbox, deine Seite selbst mitContent-Security-Policy: frame-ancestors 'none': iframes und fremde Inhalte.
Wenn ein Schlüssel verloren geht
Öffne die Einstellungen des Packlets und erzeuge einen neuen Schlüssel. Das passiert dann:
- Der alte Schlüssel ist sofort ungültig. Aufrufe damit bekommen
401 invalid_key. - Die App zeigt den neuen Schlüssel einmal an. Trag ihn in deinem Tool ein.
- Webhook-Signaturen und Session-Tokens gelten ab jetzt mit dem neuen Schlüssel.
- Kanal, Nachrichten und Einstellungen bleiben, wie sie sind.
Hast du den Schlüssel nur vergessen, geht es genauso. Anzeigen lässt sich der alte nicht mehr.
Wenn du ein Packlet entfernst
Der Schlüssel ist sofort ungültig, und der Kanal mit allen Nachrichten wird gelöscht. Das lässt sich nicht rückgängig machen.
Datenschutz
Server und Datenbank stehen in der EU. Dein Konto löschst du in der App, zusammen mit allen Packlets und Nachrichten.