Passer au contenu principal
Ce guide fournit une liste de contrôle de sécurité complète pour vous assurer que vos applications vibe codées respectent les meilleures pratiques de sécurité. Bien que Replit fournisse de nombreuses fonctionnalités de sécurité par défaut, il est important de comprendre et de mettre en œuvre des mesures de sécurité supplémentaires adaptées aux besoins spécifiques de votre application.

Prérequis

  • Un compte Replit
  • Compréhension de base de votre langage de programmation préféré
  • Familiarité avec l’espace de travail Replit
  • Une application que vous développez sur Replit

Sécurité front-end

Replit utilise HTTPS par défaut pour toutes les applications. Vous n’avez donc pas à vous en préoccuper !
Validez et assainissez toujours les entrées utilisateur pour prévenir les attaques de type cross-site scripting (XSS) :
// Mauvais : Utilisation directe de l'entrée utilisateur
element.innerHTML = userInput;

// Bon : Assainir l'entrée avant utilisation
import { sanitize } from 'some-sanitizer-library';
element.innerHTML = sanitize(userInput);
Passez en mode Lite et demandez à Agent :
Help me validate and sanitize inputs to protect against XSS attacks
Utilisez les Secrets Replit pour stocker les informations sensibles comme les clés API.Assurez-vous de ne pas transmettre de secrets côté client ni de les placer aux endroits suivants :
  • Stockage local (Local storage)
  • Stockage de session (Session storage)
  • JavaScript côté client
  • Cookies sans attributs de sécurité appropriés
Passez en mode Lite et demandez à Agent :
Help me keep sensitive data out of the browser. Am I doing this correctly?
Mettez en place une protection contre les falsifications de requêtes intersites (CSRF) pour les formulaires :
// Exemple d'implémentation de jeton CSRF
const csrfToken = generateToken();
session.csrfToken = csrfToken;
Passez en mode Lite et demandez à Agent :
Help me implement CSRF tokens for forms

Sécurité back-end

Lors de la mise en œuvre de l’authentification :
  • Utilisez Replit Auth si possible
  • Si vous créez une authentification personnalisée, utilisez des bibliothèques établies
  • Ne stockez jamais les mots de passe en texte clair
Demandez à Agent :
Help me implement authentication for my application with Replit Auth
Vérifiez toujours les permissions avant d’effectuer des actions :
// Exemple de vérification d'autorisation
if (!user.canAccess(resource)) {
  return res.status(403).send('Access denied');
}
Demandez à Agent :
Help me implement authorization checks for my application
Sécurisez vos points de terminaison API :
  • Ajoutez une authentification aux points de terminaison sensibles
  • Mettez en place des paramètres CORS appropriés
  • Envisagez la limitation de débit (rate limiting)
Passez en mode Lite et demandez à Agent :
How do I properly authenticate endpoints in my app?
Agent utilise des ORM par défaut, ce qui contribue à prévenir les injections SQL. Si vous écrivez des requêtes de base de données personnalisées :
// Mauvais : Concaténation de chaînes dans les requêtes
db.query(`SELECT * FROM users WHERE username = '${username}'`);

// Bon : Requêtes paramétrées avec ORM
db.query('SELECT * FROM users WHERE username = ?', [username]);
Ajoutez des en-têtes de sécurité importants à votre application :
<!-- Dans index.html ou via votre back-end -->
<meta http-equiv="X-Frame-Options" content="DENY">
<meta http-equiv="X-Content-Type-Options" content="nosniff">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
Vous pouvez analyser votre site sur securityheaders.com pour obtenir des recommandations.Passez en mode Lite et demandez à Agent :
Can you add the security headers to my application?

Bonnes pratiques de sécurité continues

Vérifiez régulièrement les paquets obsolètes qui pourraient présenter des vulnérabilités :
npm audit
N’exposez pas d’informations sensibles dans les messages d’erreur :
// Mauvais : Exposition de détails sensibles
catch (err) {
  res.status(500).send(`Database error: ${err.message}`);
}

// Bon : Message d'erreur générique
catch (err) {
  console.error(err); // Journaliser en interne
  res.status(500).send('An error occurred');
}
Demandez à Agent :
Help me implement proper error handling for my application
Lors de l’utilisation de cookies :
  • Définissez l’indicateur HttpOnly pour empêcher l’accès JavaScript
  • Utilisez l’attribut Secure pour exiger HTTPS
  • Implémentez l’attribut SameSite pour prévenir les CSRF
Demandez à Agent :
Help me secure my cookies for my application
Si votre application autorise les téléchargements de fichiers :
  • Limitez les types et les tailles de fichiers
  • Analysez les malwares si possible
  • Stockez les fichiers dans l’espace de stockage d’objets de Replit
  • Générez de nouveaux noms de fichiers plutôt que d’utiliser ceux fournis par l’utilisateur
Demandez à Agent :
Help me secure my file uploads for my application
Mettez en place une limitation de débit pour les points de terminaison API, en particulier ceux liés à l’authentification :
// Exemple de middleware de limitation de débit
const rateLimit = require('express-rate-limit');

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100 // limiter chaque IP à 100 requêtes par windowMs
});

app.use('/api/', limiter);
Demandez à Agent :
Help me implement rate limiting for my application

Liste de contrôle

Voici un récapitulatif sous forme de liste de contrôle pour vous aider à maintenir vos bonnes pratiques de sécurité.

Sécurité front-end

Mesure de sécuritéDescription
Utiliser HTTPS partoutPrévient l’espionnage de base et les attaques de l’homme du milieu
Validation et assainissement des entréesPrévient les attaques XSS en validant toutes les entrées utilisateur
Ne pas stocker de données sensibles dans le navigateurPas de secrets dans le stockage local ou le code côté client
Protection CSRFImplémenter des jetons anti-CSRF pour les formulaires et les requêtes modifiant l’état
Ne jamais exposer les clés API dans le front-endLes identifiants API doivent toujours rester côté serveur

Sécurité back-end

Mesure de sécuritéDescription
Principes fondamentaux de l’authentificationUtiliser des bibliothèques établies, stockage sécurisé des mots de passe (hachage+salage)
Vérifications des autorisationsToujours vérifier les permissions avant d’effectuer des actions
Protection des points de terminaison APIMettre en place une authentification appropriée pour chaque point de terminaison API
Prévention des injections SQLUtiliser des requêtes paramétrées ou des ORM, jamais du SQL brut avec des entrées utilisateur
En-têtes de sécurité de baseImplémenter X-Frame-Options, X-Content-Type-Options et HSTS
Protection DDoSUtiliser un CDN ou un service cloud avec des capacités d’atténuation DDoS intégrées

Bonnes pratiques de sécurité

Mesure de sécuritéDescription
Maintenir les dépendances à jourLa plupart des vulnérabilités proviennent de bibliothèques obsolètes
Gestion appropriée des erreursNe pas exposer de détails sensibles dans les messages d’erreur
Cookies sécurisésDéfinir les attributs HttpOnly, Secure et SameSite
Sécurité des téléchargements de fichiersValider les types, les tailles de fichiers et rechercher du contenu malveillant
Limitation de débitImplémenter sur tous les points de terminaison API, en particulier ceux liés à l’authentification