Les utilisateurs voient les données des autres
Quelqu’un s’est connecté et a vu une liste qui n’était pas la sienne — les commandes d’autres personnes, leurs messages. Ou bien ce n’est pas encore arrivé et l’éventualité vient de vous traverser l’esprit, ce qui est le meilleur moment pour lire ceci.
Pourquoi c’est difficile à voir
C’est le défaut le plus grave de ces applications, et le plus silencieux. Une règle de sécurité au niveau des lignes qui manque ne lève pas d’erreur, ne ralentit rien et ne génère pas de ticket de support de la part de la personne dont les données ont été exposées — la page marche, pour tout le monde, en affichant tout.
On y arrive aussi très honnêtement. La sécurité au niveau des lignes est désactivée par défaut tant que vous n’écrivez pas de règle ; une table ajoutée plus tard n’en hérite pas ; et une requête écrite contre votre propre compte a l’air correcte tant que vous êtes le seul utilisateur.
Ce que Sixty y fait
Chaque requête est examinée à la recherche d’une forme précise : une table qui contient les données d’une seule personne, aucune condition de restriction où que ce soit dans la requête — ni user_id, ni org_id, ni tenant_id, ni auth.uid() — et plus de lignes en retour qu’une recherche unitaire ne l’expliquerait. Les trois doivent être réunies avant qu’il ne dise quoi que ce soit.
Quand elles le sont, le constat nomme la requête et l’opération, et vous demande de confirmer plutôt que de déclarer une fuite. Une règle appliquée à l’intérieur de la base n’est pas visible dans la requête envoyée par votre application : ce qui est trouvé ici est donc une requête qui serait dangereuse si la RLS manquait — c’est-à-dire exactement celle à vérifier quand la RLS est ce qui manque le plus probablement.
Ce qu’il ne fait pas
Il ne peut pas voir vos règles, seulement vos requêtes : il peut donc se tromper dans le sens sûr — une requête correctement protégée par une règle peut quand même être signalée. Il ne vous dira pas non plus de qui étaient les données exposées : rien n’est collecté sur vos utilisateurs, ce qui est la raison même pour laquelle l’installer n’ajoute rien à votre bandeau de consentement.
OpenTelemetry
Vous avez déjà OpenTelemetry ?
Gardez votre collector et vos exportateurs. Sixty peut ingérer les traces reliées et les métriques runtime utiles pour déduire les régressions par version ; les agents natifs donnent plus de détails sur les fonctions et drivers lorsqu’ils existent.