Aller au contenu

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.

Vérifier mon projet Supabase

Gratuit, sans inscription. En lecture seule : rien n’est modifié dans votre projet.

  1. Connecter SupabaseAutorisez l’accès en lecture seule sur supabase.com.
  2. Nous lançons 45 vérificationsAccès et RLS, connexion, storage et fonctions, infrastructure. Catalogue et paramètres uniquement, jamais vos lignes.
  3. 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.

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

QuestionSecurity AdvisorCette vérification
Où il s’exécuteDans le tableau de bord Supabase, un projet à la foisSur cette page, après un OAuth en lecture seule, pour le projet que vous choisissez
Ce qu’il litLes lints de la base de donnéesLes 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ésPar lintPar OWASP Top 10:2025, avec les catégories qu’il ne peut pas vérifier
Ce que vous obtenez pour corrigerUn lien vers la documentation du lintLe SQL ou le réglage du tableau de bord pour chaque problème, et un prompt pour votre agent IA
Ce que vous pouvez conserverLa liste dans votre tableau de bordUn PDF, ou un lien de partage qui expire après 7 jours

Couverture de l’OWASP Top 10:2025

CatégorieVérificationsStatut
A01 Contrôle d’accès défaillant18Couverte
A02 Mauvaise configuration de sécurité9Couverte
A03 Défaillances de la chaîne d’approvisionnement logicielle2Partielle Version de Postgres et extensions uniquement. Les dépendances npm se trouvent dans votre dépôt.
A04 Défaillances cryptographiques4Couverte
A05 Injection1Couverte
A06 Conception non sécurisée0Non vérifiable La conception non sécurisée tient à la façon dont fonctionne votre application, pas aux paramètres.
A07 Défaillances d’authentification8Couverte
A08 Défaillances d’intégrité des logiciels ou des données1Couverte
A09 Défaillances de journalisation et d’alerte2Couverte
A10 Mauvaise gestion des conditions exceptionnelles0Non 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érificationIDOWASPPire cas
RLS désactivé sur des tables exposéesrls_disabled_exposedA01Critique
Politiques qui autorisent toutes les lignespolicy_always_trueA01Élevée
Politiques qui font confiance à user_metadatapolicy_uses_user_metadataA01Élevée
Politiques d’écriture ouvertes aux visiteurs anonymesanon_write_policiesA01Élevée
Vues qui contournent RLSviews_without_security_invokerA01Élevée
Vues matérialisées ou tables étrangères dans l’APImatviews_or_foreign_tables_exposedA01Moyenne
Fonctions security definer appelables depuis l’APIsecurity_definer_executableA01Élevée
Politiques de storage ouvertes aux visiteurs anonymesstorage_objects_anon_policiesA01Élevée
Buckets de storage publicspublic_bucketsA01Faible
Canaux Realtime privés sans protectionrealtime_messages_rlsA01Élevée
Droits d’écriture inutilisés pour les visiteurs anonymesanon_table_grants_writeA01Faible
Rôles qui contournent RLSroles_bypass_rlsA01Élevée
Colonnes d’accès modifiables par les utilisateurs connectésauthz_columns_writableA01Élevée
Supprimer puis réinsérer change une colonne protégéedelete_insert_bypassA01Élevée
Droits de table inutiles pour les utilisateurs connectésauthenticated_table_grants_extraA01Faible
Privilèges par défaut qui ouvrent les nouveaux objets à l’APIdefault_privileges_api_rolesA01Faible
Fonctions security definer qui vérifient current_userdefiner_checks_current_userA01Moyenne
Politiques sans rôle ni commandepolicies_without_to_or_forA01Faible
Résultats du Supabase Security Advisoradvisor_lintsA02Élevée
Schémas supplémentaires exposés dans la Data APIextra_exposed_schemasA02Élevée
Jokers dans les URL de redirectionredirect_wildcardsA02Moyenne
URL de redirection en http ou vers localhostinsecure_redirect_urlsA02Moyenne
Connexions anonymes activéesanonymous_signins_enabledA02Moyenne
CAPTCHA désactivé pour l’inscription et la connexioncaptcha_disabledA02Moyenne
Base de données ouverte à toutes les adresses IPnetwork_openA02Moyenne
Buckets publics sans limites d’uploadpublic_bucket_no_limitsA02Faible
Aucun plafond de lignes sur les réponses de la Data APIpostgrest_max_rowsA02Moyenne
Mise à niveau de Postgres disponiblepostgres_upgrade_availableA03Moyenne
Extensions installéesextensions_listedA03Info
SSL non imposé sur les connexions à la basessl_enforcement_offA04Moyenne
Jetons d’accès valides plus d’une heurejwt_expiry_longA04Moyenne
Colonnes au nom sensible lisibles par les visiteurs anonymessensitive_columns_exposedA04Élevée
Secrets du Vault lisibles par les rôles de l’APIvault_secrets_exposedA04Critique
SQL dynamique construit à partir de chaînesdynamic_sql_concatA05Moyenne
Longueur minimale de mot de passe trop courtepassword_min_lengthA07Élevée
Protection contre les mots de passe compromis désactivéeleaked_password_protection_offA07Moyenne
Confirmation par e-mail désactivéeemail_confirm_offA07Élevée
Changement d’e-mail sécurisé désactivésecure_email_change_offA07Moyenne
Codes à usage unique valides plus d’une heureotp_expiry_longA07Moyenne
Aucune méthode d’authentification multifacteur activéemfa_unavailableA07Moyenne
Rotation des jetons de rafraîchissement désactivéerefresh_token_rotation_offA07Moyenne
Changement de mot de passe sans réauthentificationpassword_change_no_reauthA07Faible
Edge Functions sans vérification du JWTedge_functions_without_jwtA08Faible
pgaudit non installépgaudit_missingA09Info
Aucune sauvegarde trouvéebackups_or_pitrA09Moyenne

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