N’oubliez pas de corriger les problèmes signalés par le Security CheckerAssurez-vous de résoudre les problèmes relevés par le Security Checker intégré à Lovable avant de publier votre application en ligne. Le Security Checker analyse automatiquement votre application et fournit des recommandations précieuses pour améliorer la sécurité.
Comprendre l’architecture de Lovable
Sauf indication contraire, Lovable génère des applications avec l’architecture suivante :- Frontend : application TypeScript/React
- Backend : Supabase Edge Functions (fonctions serverless)
- Database : Supabase (PostgreSQL avec fonctionnalités en temps réel)
Sécurité du frontend : ne faites jamais confiance au code côté client
La règle d’or : le code frontend est public
Tout le code React s’exécute dans le navigateur de l’utilisateur et est par nature public. Les utilisateurs peuvent inspecter, modifier ou contourner n’importe quel code frontend. Par conséquent :- Ne jamais stocker de Secrets dans le code frontend - clés API, mots de passe ou configuration sensible
- Ne jamais effectuer de validation dans le code frontend - la validation côté client peut être contournée
- Ne jamais faire confiance aux données du frontend - toujours valider du côté des Edge Functions
Erreurs de sécurité courantes côté front-end
Exemples d’invites pour valider et renforcer la sécurité du front-end
Sécurité du backend : déplacer la logique métier vers les Edge Functions
Considérez les Edge Functions comme votre couche d’API
- Authentification et autorisation
- Validation et assainissement des données
- Logique métier et workflows
- Intégration avec des services tiers
- Traitement des données sensibles
Meilleures pratiques pour les Edge Functions
Ce que les Edge Functions doivent gérer
- Vérifie toujours que les utilisateurs sont bien ceux qu’ils prétendent être avant de leur permettre d’effectuer des actions
- Vérifie si les utilisateurs ont les bonnes autorisations pour des opérations spécifiques
- Ne fais jamais confiance au fait que quelqu’un soit connecté simplement parce qu’il l’affirme
- Vérifie toutes les données entrantes pour t’assurer qu’elles sont au bon format
- Supprime tout contenu potentiellement dangereux des entrées utilisateur
- Assure-toi que les données respectent tes règles métier avant de les traiter
- Gère des processus métier complexes comme le traitement des commandes, les calculs de paiements ou l’inscription des utilisateurs
- Gère les relations entre différentes données
- Coordonne plusieurs étapes dans une seule opération
- Se connecte en toute sécurité à des services tiers comme les prestataires de paiement, les fournisseurs d’e-mails ou des API
- Garde les clés API sensibles et les identifiants en sécurité
- Gère correctement les erreurs et les délais d’attente
- Traite des informations personnelles, des données financières ou d’autres contenus sensibles
- Applique le chiffrement ou d’autres mesures de sécurité lorsque nécessaire
- Journalise les événements importants pour l’audit de sécurité
Avantages en matière de sécurité des Edge Functions
Exemple d’invites pour des Edge Functions sécurisées
Sécurité de la base de données : gardez la RLS simple et mettez-la en place dès le départ
Sécurité au niveau des lignes (RLS) dans Lovable
Modèles RLS courants dans les applications Lovable
- Les utilisateurs ne doivent voir que leur propre profil, leurs paramètres et leurs données personnelles
- Modèle par défaut : « Les utilisateurs ne peuvent accéder qu’à leurs propres données »
- Les membres d’une équipe peuvent voir les données de projet partagées au sein de leur équipe
- Modèle : « Les utilisateurs peuvent accéder aux données des équipes auxquelles ils appartiennent »
- Contenu public que tout le monde peut lire, mais que seuls les propriétaires peuvent modifier
- Modèle : « Tout le monde peut lire, seuls les propriétaires peuvent modifier »
- Les employés d’une entreprise peuvent accéder aux données de l’entreprise
- Modèle : « Les utilisateurs peuvent accéder aux données de leur organisation »
Vérification de la RLS dans votre application Lovable
- Passez en revue les tables pour lesquelles la RLS est activée
- Vérifiez que les tables contenant des données sensibles sont protégées
- Assurez-vous que les tables de données publiques disposent de règles de lecture appropriées
- Vérifiez que les utilisateurs ne voient que leurs propres données
- Testez que les données partagées sont accessibles aux bonnes personnes
- Confirmez que les données publiques sont visibles par tout le monde
- Tables sans RLS activée pour les données sensibles
- Règles trop permissives qui exposent trop de données
- Règles manquantes pour les nouvelles tables ou fonctionnalités
Exemples de Prompts pour la revue RLS
Liste de contrôle RLS rapide
- Toutes les tables sensibles ont le RLS activé
- Les utilisateurs ne peuvent accéder qu’à leurs propres données personnelles
- Les données partagées disposent de contrôles d’accès appropriés
- Les nouvelles tables se voient automatiquement appliquer des politiques RLS
- Les politiques sont simples et faciles à comprendre
Sécurité de l’authentification : conservez la logique côté serveur
La logique d’authentification doit s’exécuter côté serveur
Toutes les décisions d’authentification, la validation des jetons et la vérification des utilisateurs doivent avoir lieu côté serveur, et non dans le navigateur. L’authentification côté client peut être facilement contournée ou manipulée. Principes clés :- Ne faites jamais confiance aux vérifications d’authentification côté client - les utilisateurs peuvent modifier le code du navigateur
- Validez les jetons sur le serveur - vérifiez toujours l’authentification dans les Edge Functions
- Gardez la gestion de session côté serveur - laissez Supabase gérer le stockage sécurisé des sessions
- N’exposez jamais les Secrets d’authentification - les clés API et les jetons ne doivent jamais atteindre le front-end
Flux d’authentification sécurisé
Bonnes pratiques d’authentification
- Vérifie toujours l’authentification de l’utilisateur dans les Edge Functions avant de traiter les requêtes
- Contrôle les autorisations et les rôles utilisateur sur le serveur, pas dans les composants React
- Valide les jetons de session en les comparant à la base de données ou au service d’authentification
- Utilise la gestion de session intégrée de Supabase pour un stockage sécurisé des jetons
- Affiche l’interface utilisateur en fonction de l’état d’authentification, mais ne prends jamais de décisions de sécurité côté client
- Redirige vers la page de connexion lorsque les sessions expirent, mais valide d’abord sur le serveur
Protection de l’espace de travail : sécurisez vos applications internes
Assurez-vous que les applications internes ont la visibilité définie sur « Workspace »
- Définissez la visibilité du projet des applications internes sur « Workspace » dans le tableau de bord du projet
- Vérifiez qu’elles ne sont pas publiées sur Internet
- Utilisez une authentification appropriée pour tous les outils internes
- Contrôlez régulièrement l’accès aux applications privées
Synthèse des bonnes pratiques de sécurité
Flux de développement
- Commencez par la sécurité - Mettez en place RLS et l’authentification dès le début
- Utilisez l’outil de contrôle de sécurité - Exécutez régulièrement l’outil de vérification de sécurité de Lovable
- Suivez les recommandations - Mettez en œuvre toutes les suggestions de sécurité
- Testez de manière approfondie - Vérifiez que les mesures de sécurité fonctionnent comme prévu
- Documentez les décisions de sécurité - Gardez une trace des choix de sécurité et de leur justification
Audits de sécurité réguliers
- Examiner les autorisations des fonctions Edge
- Auditer les règles RLS
- Vérifier l’éventuelle exposition de Secrets
- Vérifier les flux d’authentification
- Tester les contrôles d’accès
Liste de contrôle de sécurité standard
- Aucun Secrets dans le code du frontend
- Toute la logique de validation dans les Edge Functions
- Stratégies RLS mises en œuvre et testées
- Authentification via des méthodes sécurisées
- Applications internes correctement protégées
- Analyseur de sécurité exécuté et recommandations appliquées
- Revues de sécurité régulières effectuées
Utiliser le vérificateur de sécurité Lovable
- Lance le vérificateur de sécurité dans le tableau de bord de ton projet
- Passe en revue toutes les recommandations avec attention
- Applique les correctifs suggérés rapidement
- Relance le vérificateur après avoir effectué les modifications
- Consigne toute exception avec une justification claire