WindevExpert

Vidéo 20 • Sécurité des Données Cloud

L'Étanchéité :
Le Silo Logique

Apprenez à construire une base de données "Blindée" où aucun client ne peut voir les secrets d'un autre.

Le Danger du Mélange

La Fuite de Données

Si votre requête oublie le filtre IDTenant, le serveur renvoie TOUT.
Le client A voit le chiffre d'affaires du client B.

CONSÉQUENCE : Fin de votre entreprise SaaS immédiate.

L'Isolation Automatique

Le serveur injecte SYSTEMATIQUEMENT le filtre IDTenant extrait de la session sécurisée.

GARANTIE : Une étanchéité physique au sein d'une table logique.

Simulation : Filtrage en Temps Réel

Utilisateur Connecté

Jean (Boulangerie A) ID: ALPHA
Marc (Boucherie B) ID: BETA

Base de Données Cloud (Table Ventes)

#TK_101 12.50 € ALPHA
#TK_402 45.00 € BETA
#TK_102 8.00 € ALPHA
#TK_403 112.90 € BETA
SELECT * FROM Ventes WHERE IDTenant = 'ALPHA'

Le secret : L'ID extrait du Token

D'où vient le filtre ?

Le client ne passe pas son ID dans la requête (trop dangereux, modifiable).
Le serveur le lit dans le Token JWT ou la Session après authentification.

Cerveau du SaaS :

"Je sais qui tu es car tu es connecté. Je force donc l'IDTenant 'ALPHA' sur toutes tes recherches."

Auth Context

CurrentTenant = 'ALPHA'

L'Injection dans le SQL

// 1. Récupération de l'identité sécurisée
sIDTenantActuel est une chaîne = Session.IDTenant

// 2. Préparation de la requête avec PARAMÈTRE
// (Ne jamais concaténer directement pour éviter l'injection SQL)
sSQL est une chaîne = "SELECT * FROM Ventes WHERE IDTenant = %1"

// 3. Exécution avec le Silo forcé
HExécuteRequêteSQL(REQ_MaListe, hRequêteSansCorrection, ChaîneConstruit(sSQL, sIDTenantActuel))
"Même si le client essaie de tricher, il est enfermé dans son propre silo."