Fiche de sécurité technique

Sécurité & protection des données

Comment Flitt chiffre vos données, gère les jetons d'accès et respecte le RGPD — sur le backend (api.flitt.me), le site (flitt.me), l'Edge SDK auto-hébergé et les addons installés sur vos serveurs de jeu.

Dernière mise à jour : 21 septembre 2026

1. Périmètre et architecture

Flitt est composé de quatre briques. Chacune a un rôle précis et ne voit que les données dont elle a besoin.

Backend (api.flitt.me)
API Fastify (Node.js) derrière un reverse proxy nginx, base PostgreSQL, Redis pour le cache, les files de tâches et les sessions temporaires (2FA, codes de liaison). Hébergé par Qoriz Hosting, Paris (voir mentions légales).
Frontend (flitt.me)
Next.js. Le navigateur ne parle jamais directement à l'API : les appels passent par des routes serveur Next qui portent la session (cookie httpOnly) et relaient vers le backend en Bearer.
Edge SDK (auto-hébergé, Go)
Binaire que vous installez sur votre propre machine pour stocker localement logs et historiques joueurs. Le backend ne conserve alors que des agrégats ; les données brutes restent chez vous, chiffrées.
Addons (Lua GMod / FiveM, plugin Java Minecraft)
Code open source, lisible ci-dessous. Ils envoient uniquement des événements de jeu (connexions, chat, statistiques) au backend ou à votre Edge et exécutent les commandes que vous déclenchez depuis le dashboard, l'API ou le bot.

2. Chiffrement en transit

TLS partout
flitt.me et api.flitt.me sont servis exclusivement en HTTPS (TLS 1.2+). HSTS est activé en production (1 an, includeSubDomains, preload) : un navigateur qui a déjà visité le site refuse toute connexion non chiffrée.
En-têtes de sécurité
Content-Security-Policy, X-Frame-Options, Referrer-Policy et X-Content-Type-Options sont posés par le backend (helmet). Les réponses d'API sont marquées noindex.
Cookies de session
httpOnly, Secure, SameSite=Lax. Le JavaScript de la page ne peut pas lire le jeton ; les requêtes cross-site ne l'envoient pas. Un contrôle CSRF supplémentaire s'applique aux mutations authentifiées par cookie.
Temps réel
Les mises à jour live du dashboard passent par WebSocket sécurisé (wss://), authentifié avec le même jeton et cloisonné par serveur : un client ne reçoit que les événements des serveurs auxquels il a accès.
Serveur de jeu → Flitt
Les addons appellent api.flitt.me en HTTPS avec la clé du serveur dans l'en-tête X-API-Key (jamais dans l'URL, donc jamais dans les journaux de proxy).
Edge SDK ↔ backend
L'Edge contacte le backend en HTTPS avec vérification du certificat (tls_verify: true par défaut). Le backend ne contacte l'Edge que sur l'adresse publique que vous déclarez ; les adresses privées, loopback et métadonnées cloud sont refusées. L'Edge peut servir lui-même en HTTPS (tls_cert / tls_key) ou être placé derrière un reverse proxy TLS.
Webhooks sortants
Chaque webhook que Flitt vous envoie est signé HMAC-SHA256 (horodatage + nonce + corps) pour que vous puissiez vérifier l'origine et rejeter les rejeux. Les destinations privées sont refusées (protection SSRF).

3. Chiffrement et hachage au repos

Aucun secret n'est stocké en clair. Selon le besoin (vérifier ou réutiliser), il est haché ou chiffré.

Mots de passe
Flitt n'en stocke aucun : l'authentification passe par Discord (OAuth2) ou Google (OIDC). Nous ne recevons jamais votre mot de passe.
Secrets 2FA (TOTP)
Chiffrés AES-256-GCM avec une clé dédiée (MFA_ENCRYPTION_KEY), distincte de la clé de signature des sessions.
Jetons de rafraîchissement
Seule l'empreinte SHA-256 est conservée. Un vol de base de données ne permet pas de rejouer une session.
Clés API publique
Hachées bcrypt (coût 10) + empreinte HMAC-SHA256 avec pepper pour la recherche. La clé n'est affichée qu'une fois, à la création.
Clés API serveur (addons)
Empreinte HMAC-SHA256 avec pepper, jamais la valeur brute. Régénérables à tout moment depuis le dashboard.
Jetons Edge
Empreinte HMAC-SHA256 pour la vérification ; copie chiffrée AES-256-GCM uniquement pour permettre au backend d'appeler votre Edge. Comparaison en temps constant.
Edge SDK — vos données
Chaque document (log, joueur, statistique) est chiffré AES-256-GCM avant écriture, quel que soit le pilote (fichier, MySQL/MariaDB, PostgreSQL). Les clés par document sont dérivées par HKDF-SHA256 d'une clé maître générée localement (./data/.edge_encryption_key, permissions 0600) ou fournie par vous. Flitt ne possède pas cette clé.
Mises à jour Edge SDK
Chaque binaire est signé Ed25519 et accompagné d'un SHA-256. L'Edge vérifie signature et somme de contrôle avant de remplacer l'exécutable ; une mise à jour non signée est rejetée.
Images envoyées (bannières, logos)
Ré-encodées côté serveur (sharp) : les métadonnées EXIF et tout contenu actif sont supprimés.

4. Gestion des jetons et des accès

Sessions
Jeton d'accès JWT de 15 minutes, jeton de rafraîchissement de 30 jours avec rotation à chaque usage et révocation à la déconnexion. Les sessions sont invalidées lors de la suppression du compte.
Double authentification
TOTP (compatible Google Authenticator, Authy…). La session MFA est limitée à 5 tentatives puis invalidée ; la suppression du compte exige un code 2FA lorsqu'elle est activée.
Rate limiting
Connexion, rafraîchissement, 2FA, enregistrement Edge, liaison Discord et API publique sont limités par adresse IP (résolue de façon fiable derrière le proxy) et, pour l'API publique, par clé et par offre.
Rôles serveur
OWNER, ADMIN, EDITOR. Les actions qui modifient l'état du serveur de jeu (console RCON, bans, kicks, changement de grade) exigent ADMIN ou OWNER, que l'ordre vienne du dashboard, de l'API publique ou du bot Discord.
Journal d'audit
Toute commande distante (RCON, ban, kick, set_group) est inscrite dans le journal Audit du serveur avec son auteur, sa source (dashboard, API, bot) et son contenu.
Enregistrement Edge
Code d'enregistrement à usage unique de 72 bits, valable 48 h. Le jeton Edge peut être renouvelé à chaque heartbeat.
Bot Discord
Le bot ne parle au backend qu'avec un jeton interne dédié ; les fonctions d'administration sont verrouillées sur le serveur Discord officiel de Flitt. La liaison compte Discord ↔ joueur se fait par code temporaire saisi en jeu.
Secrets de production
Séparés du code, jamais versionnés (.env exclus du dépôt), clés distinctes par usage (sessions, 2FA, pepper API, Edge). Rotation possible sans interruption pour les clés de sessions et d'API.

5. Conformité RGPD

Responsable de traitement
Pour vos données de compte : l'éditeur de Flitt (voir mentions légales). Pour les données des joueurs de votre serveur, vous êtes responsable de traitement et Flitt agit comme sous-traitant, sur vos instructions (installation de l'addon, activation des modules).
Données collectées — compte
Identifiant, pseudo, avatar et e-mail Discord ou Google ; données de facturation traitées par Stripe (Flitt ne stocke aucun numéro de carte).
Données collectées — serveurs
Adresse IP:port publique du serveur (déjà publique par nature), nom, description, statistiques de fréquentation.
Données collectées — joueurs
Envoyées par votre addon : pseudo, identifiant de jeu (SteamID, licence FiveM, UUID Minecraft), messages de chat si le module est activé, et adresse IP pour la géolocalisation pays et la détection de VPN (module optionnel). Avec un Edge SDK, ces données sont stockées chez vous.
Durées de conservation
Logs de jeu : 7 jours. Échantillons de fréquentation et disponibilité : 90 jours. Sur un Edge SDK : réglable (retention_days) et purge à la demande depuis le dashboard. Compte : jusqu'à suppression.
Vos droits
Suppression du compte et de toutes les données associées directement depuis le dashboard (protégée par 2FA). Accès, rectification, portabilité ou opposition : via le support, réponse sous 30 jours. Vous pouvez saisir la CNIL.
Hébergement et transferts
Données hébergées en France (Qoriz Hosting, Paris). Sous-traitants : Stripe (paiement), Discord et Google (authentification). Aucun transfert hors UE à l'initiative de Flitt en dehors de ces prestataires, encadrés par leurs clauses contractuelles types.
Minimisation
Les modules addon sont désactivables individuellement (logs, chat, anti-VPN). Un module désactivé ne transmet rien.

6. Processus et signalement

Revue de sécurité
Revue de code interne régulière du backend, du frontend, de l'Edge SDK et des addons ; les correctifs sont déployés en priorité et documentés.
Signaler une vulnérabilité
Écrivez-nous via le support ou sur Discord avec les étapes de reproduction. Nous accusons réception sous 48 h et ne poursuivons pas les chercheurs de bonne foi.

Le code qui tourne sur votre serveur

Les addons GMod et FiveM se mettent à jour automatiquement en téléchargeant leur code depuis Flitt. Vous pouvez lire ligne par ligne exactement ce qui est exécuté, y compris les loaders et les modules optionnels.

Voir le code source des addons

Une question de sécurité ?

Notre équipe répond aux questions techniques, aux demandes RGPD et aux signalements de vulnérabilité.