Auditez votre projet Supabase avec 45 règles OWASP Top 10:2025 et plus
Connectez un projet en lecture seule et obtenez un rapport noté, avec le correctif de chaque problème, directement sur cette page.
Pour les équipes qui développent avec Lovable, Bolt, Cursor ou v0 sur Supabase. Gratuit, sans inscription.
Gratuit, sans inscription. En lecture seule : rien n’est modifié dans votre projet.
- Connecter SupabaseAutorisez l’accès en lecture seule sur supabase.com.
- Nous lançons 45 vérificationsAccès et RLS, connexion, storage et fonctions, infrastructure. Catalogue et paramètres uniquement, jamais vos lignes.
- Rapport et prompt pour votre agent IAUn correctif pour chaque problème, plus un prompt à coller dans Cursor, Claude Code ou Lovable. Conservé uniquement si vous le partagez.
Chargement de vos projets Supabase…
Choisissez un projet à analyser
20 lettres minuscules, comme dans supabase.com/dashboard/project/your-ref.
Confirmez que vous êtes humain
Cela tient les analyses automatisées à l’écart du service.
Journal d’analyse
Ce que la vérification peut voir
Nous lisons
- Le catalogue de la base : tables, indicateurs RLS, politiques, grants, vues, fonctions, extensions, rôles et qui peut lire le Vault
- Les paramètres d’auth : règles de mot de passe, confirmation par e-mail, MFA, URL de redirection
- Storage : la liste des buckets, ceux qui sont publics et leurs limites de taille et de type de fichier
- Edge Functions : la liste et le réglage JWT de chacune
- Les paramètres du projet : version de Postgres, sauvegardes, SSL, restrictions réseau, plafond de lignes de la Data API
Nous ne lisons jamais
- Les lignes de vos tables
- Les clés d’API et les secrets : Supabase en inclut quelques-uns dans les réponses de paramètres, et le scan les écarte dès leur arrivée, sans les stocker, les journaliser ni les afficher
- Les fichiers stockés dans vos buckets
- Le code de votre application et votre dépôt
Un rapport n’est conservé que si vous créez un lien de partage, 7 jours au maximum. L’accès accordé est révoqué juste après la vérification.
Ce que l’accès en lecture ne peut pas vérifier
- A06 Conception non sécurisée et A10 Mauvaise gestion des conditions exceptionnelles relèvent du code de votre application, pas des paramètres du projet.
- Les dépendances du frontend (la partie npm de A03) et une clé service_role embarquée dans le code du frontend. Vérifiez votre dépôt pour cela.
- Les règles d’accès qui vivent seulement dans le code de l’app ou dans des Edge Functions, comme une vérification plan = 'pro' dans le frontend. L’analyse ne voit que les colonnes que la base elle-même utilise dans les politiques, fonctions et auth hooks : un résultat réussi sur les colonnes d’accès modifiables ne signifie pas que ces colonnes sont sûres.
- Si un utilisateur connecté peut lire les lignes d’un autre. Cela demande un test avec deux vrais utilisateurs : comment tester le RLS de Supabase
Supabase Security Advisor et cette vérification
| Question | Security Advisor | Cette vérification |
|---|---|---|
| Où il s’exécute | Dans le tableau de bord Supabase, un projet à la fois | Sur cette page, après un OAuth en lecture seule, pour le projet que vous choisissez |
| Ce qu’il lit | Les lints de la base de données | Les mêmes lints en une seule vérification, plus l’auth, le storage, les Edge Functions, les sauvegardes et les paramètres réseau |
| Comment les résultats sont regroupés | Par lint | Par OWASP Top 10:2025, avec les catégories qu’il ne peut pas vérifier |
| Ce que vous obtenez pour corriger | Un lien vers la documentation du lint | Le SQL ou le réglage du tableau de bord pour chaque problème, et un prompt pour votre agent IA |
| Ce que vous pouvez conserver | La liste dans votre tableau de bord | Un PDF, ou un lien de partage qui expire après 7 jours |
Couverture de l’OWASP Top 10:2025
| Catégorie | Vérifications | Statut |
|---|---|---|
| A01 Contrôle d’accès défaillant | 18 | Couverte |
| A02 Mauvaise configuration de sécurité | 9 | Couverte |
| A03 Défaillances de la chaîne d’approvisionnement logicielle | 2 | Partielle Version de Postgres et extensions uniquement. Les dépendances npm se trouvent dans votre dépôt. |
| A04 Défaillances cryptographiques | 4 | Couverte |
| A05 Injection | 1 | Couverte |
| A06 Conception non sécurisée | 0 | Non vérifiable La conception non sécurisée tient à la façon dont fonctionne votre application, pas aux paramètres. |
| A07 Défaillances d’authentification | 8 | Couverte |
| A08 Défaillances d’intégrité des logiciels ou des données | 1 | Couverte |
| A09 Défaillances de journalisation et d’alerte | 2 | Couverte |
| A10 Mauvaise gestion des conditions exceptionnelles | 0 | Non vérifiable La gestion des erreurs se trouve dans le code de votre application, que l’accès en lecture ne voit jamais. |
Les 45 vérifications
| Vérification | ID | OWASP | Pire cas |
|---|---|---|---|
| RLS désactivé sur des tables exposées | rls_disabled_exposed | A01 | Critique |
| Politiques qui autorisent toutes les lignes | policy_always_true | A01 | Élevée |
| Politiques qui font confiance à user_metadata | policy_uses_user_metadata | A01 | Élevée |
| Politiques d’écriture ouvertes aux visiteurs anonymes | anon_write_policies | A01 | Élevée |
| Vues qui contournent RLS | views_without_security_invoker | A01 | Élevée |
| Vues matérialisées ou tables étrangères dans l’API | matviews_or_foreign_tables_exposed | A01 | Moyenne |
| Fonctions security definer appelables depuis l’API | security_definer_executable | A01 | Élevée |
| Politiques de storage ouvertes aux visiteurs anonymes | storage_objects_anon_policies | A01 | Élevée |
| Buckets de storage publics | public_buckets | A01 | Faible |
| Canaux Realtime privés sans protection | realtime_messages_rls | A01 | Élevée |
| Droits d’écriture inutilisés pour les visiteurs anonymes | anon_table_grants_write | A01 | Faible |
| Rôles qui contournent RLS | roles_bypass_rls | A01 | Élevée |
| Colonnes d’accès modifiables par les utilisateurs connectés | authz_columns_writable | A01 | Élevée |
| Supprimer puis réinsérer change une colonne protégée | delete_insert_bypass | A01 | Élevée |
| Droits de table inutiles pour les utilisateurs connectés | authenticated_table_grants_extra | A01 | Faible |
| Privilèges par défaut qui ouvrent les nouveaux objets à l’API | default_privileges_api_roles | A01 | Faible |
| Fonctions security definer qui vérifient current_user | definer_checks_current_user | A01 | Moyenne |
| Politiques sans rôle ni commande | policies_without_to_or_for | A01 | Faible |
| Résultats du Supabase Security Advisor | advisor_lints | A02 | Élevée |
| Schémas supplémentaires exposés dans la Data API | extra_exposed_schemas | A02 | Élevée |
| Jokers dans les URL de redirection | redirect_wildcards | A02 | Moyenne |
| URL de redirection en http ou vers localhost | insecure_redirect_urls | A02 | Moyenne |
| Connexions anonymes activées | anonymous_signins_enabled | A02 | Moyenne |
| CAPTCHA désactivé pour l’inscription et la connexion | captcha_disabled | A02 | Moyenne |
| Base de données ouverte à toutes les adresses IP | network_open | A02 | Moyenne |
| Buckets publics sans limites d’upload | public_bucket_no_limits | A02 | Faible |
| Aucun plafond de lignes sur les réponses de la Data API | postgrest_max_rows | A02 | Moyenne |
| Mise à niveau de Postgres disponible | postgres_upgrade_available | A03 | Moyenne |
| Extensions installées | extensions_listed | A03 | Info |
| SSL non imposé sur les connexions à la base | ssl_enforcement_off | A04 | Moyenne |
| Jetons d’accès valides plus d’une heure | jwt_expiry_long | A04 | Moyenne |
| Colonnes au nom sensible lisibles par les visiteurs anonymes | sensitive_columns_exposed | A04 | Élevée |
| Secrets du Vault lisibles par les rôles de l’API | vault_secrets_exposed | A04 | Critique |
| SQL dynamique construit à partir de chaînes | dynamic_sql_concat | A05 | Moyenne |
| Longueur minimale de mot de passe trop courte | password_min_length | A07 | Élevée |
| Protection contre les mots de passe compromis désactivée | leaked_password_protection_off | A07 | Moyenne |
| Confirmation par e-mail désactivée | email_confirm_off | A07 | Élevée |
| Changement d’e-mail sécurisé désactivé | secure_email_change_off | A07 | Moyenne |
| Codes à usage unique valides plus d’une heure | otp_expiry_long | A07 | Moyenne |
| Aucune méthode d’authentification multifacteur activée | mfa_unavailable | A07 | Moyenne |
| Rotation des jetons de rafraîchissement désactivée | refresh_token_rotation_off | A07 | Moyenne |
| Changement de mot de passe sans réauthentification | password_change_no_reauth | A07 | Faible |
| Edge Functions sans vérification du JWT | edge_functions_without_jwt | A08 | Faible |
| pgaudit non installé | pgaudit_missing | A09 | Info |
| Aucune sauvegarde trouvée | backups_or_pitr | A09 | Moyenne |
Questions
En quoi est-ce différent du Supabase Security Advisor ?
Les résultats du Security Advisor forment l’une des vérifications. L’analyse y ajoute les paramètres d’auth, les politiques de storage, les Edge Functions, les sauvegardes et les paramètres réseau, regroupe tout par OWASP Top 10:2025 et donne un correctif pour chaque problème.
Supabase est-il sécurisé par défaut ?
La plateforme est maintenue par Supabase, mais les règles d’accès sont les vôtres. Une table créée en SQL pur a Row Level Security désactivé, et une politique écrite using (true) permet à quiconque possède l’anon key de lire la table. L’analyse cherche précisément ces réglages.
Que signifie « RLS disabled », et comment l’activer ?
Quand RLS est désactivé sur une table d’un schéma exposé, quiconque possède votre anon key peut lire chaque ligne via la Data API. Activez-le avec alter table public.your_table enable row level security; puis ajoutez des politiques pour l’accès voulu.
Est-ce sans risque que mon anon key Supabase soit dans le navigateur ?
Oui, la clé anon (publishable) est faite pour être publique. Elle ne peut faire que ce que vos grants et vos politiques RLS autorisent, c’est pourquoi l’analyse les vérifie. La clé service_role contourne RLS et ne doit jamais arriver dans le navigateur.
Vérifiez votre propre projet
Gratuit et en lecture seule. Le rapport s’affiche sur cette page.
Vérifier mon projet Supabase