Sécurité

Comment Selyf protège réellement votre accès Gmail et les données de votre compte : scope OAuth en lecture seule, stockage chiffré des jetons, contrôles CSRF/CORS/session, et isolation des appels IA vis-à-vis de vos identifiants.

Cette page décrit des contrôles réels et implémentés — pas des ambitions. Aucun système n'est sans risque, et nous ne prétendrons jamais le contraire.

Accès Gmail

  • Read-only Gmail scope

    Selyf requests exactly one Gmail OAuth scope: gmail.readonly. There is no code path anywhere in this product that can send, delete, or modify a Gmail message — not a missing feature, an absent permission.

  • Separate trust domains

    The Google OAuth client (what lets you sign in) and the GCP service account (what receives Gmail’s push notifications) are two distinct credentials with distinct, narrow permissions — neither can be used to do the other’s job.

  • Encrypted token storage

    Your OAuth refresh token is encrypted at rest with AES-256-GCM (a random IV per encryption) before it ever touches the database.

Sécurité de l'application

  • CSRF protection

    State-changing actions (disconnecting Google, deleting your account) require a session-bound CSRF token, checked with a timing-safe comparison, on top of an independent Origin check.

  • Locked-down CORS

    The API only accepts cross-origin requests from an exact, configured origin allowlist — no wildcards.

  • IDOR-safe data access

    Every query for a thread, message, or analysis result is scoped to the requesting session’s own user id at the database layer — there is no request shape that can address another user’s data.

  • Rate limiting

    Global and per-route rate limits apply across the API, with stricter limits on the Google-facing OAuth routes specifically.

  • No leaked internals in errors

    API errors are mapped to a closed, documented set of error codes with generic messages — stack traces and internal detail never reach the client, and logs are redacted (both by key name and by value pattern) before anything is written.

Traitement des requêtes IA

  • Prompt-injection resistant by construction

    Email content is only ever placed inside an escaped, delimited data block in the AI request — never concatenated into the system prompt, never treated as an instruction. This is covered by an automated test file, not just a design intention.

  • AI has no authorization authority

    An AI analysis result is a suggestion. It cannot trigger a send, a delete, or any other action on your behalf — there is no code path that lets a model’s output cause a side effect beyond being displayed to you.

  • Independently validated output

    Every AI response is checked against a strict schema on this server, separately from whatever validation the AI provider’s own SDK does — a malformed or unexpected response is rejected, not passed through.

  • No public webhook to spoof

    Gmail push notifications are received by pulling from a Google Cloud Pub/Sub subscription, not by exposing an inbound webhook URL — there is no unauthenticated endpoint an attacker could send a forged notification to.

Gérer votre propre compte

Vous pouvez déconnecter votre compte Google ou supprimer définitivement votre compte Selyf et toutes les données associées, à tout moment, depuis les Paramètres de votre tableau de bord. La suppression de votre compte est immédiate — vous n'avez pas à attendre l'expiration d'une période de rétention.