Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://docs.replit.com/llms.txt

Use this file to discover all available pages before exploring further.

Ce guide fournit une liste de contrôle de sécurité complète pour vous assurer que vos applications codées en mode vibe 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 d’implémenter des mesures de sécurité supplémentaires adaptées aux besoins spécifiques de votre application.

Prérequis

  • Un compte Replit
  • Une compréhension de base de votre langage de programmation préféré
  • Une familiarité avec l’éditeur de projet
  • Une application que vous créez 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 XSS (cross-site scripting) :
// Mauvaise pratique : utilisation directe de l'entrée utilisateur
element.innerHTML = userInput;

// Bonne pratique : assainir l'entrée avant utilisation
import { sanitize } from 'some-sanitizer-library';
element.innerHTML = sanitize(userInput);
Passez en mode Lite et demandez à Agent :
Aide-moi à valider et assainir les entrées pour me protéger contre les attaques XSS
Vous devriez utiliser les Secrets Replit pour stocker les informations sensibles comme les clés API.Assurez-vous de ne pas transmettre les secrets côté client ni de les placer aux endroits suivants :
  • Stockage local
  • Stockage de session
  • JavaScript côté client
  • Cookies sans attributs de sécurité appropriés
Passez en mode Lite et demandez à Agent :
Aide-moi à garder les données sensibles hors du navigateur. Est-ce que je fais ça correctement ?
Implémentez la 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 :
Aide-moi à implémenter des jetons CSRF pour les formulaires

Sécurité back-end

Lors de l’implémentation de l’authentification :
  • Utilisez Replit Auth lorsque c’est 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 :
Aide-moi à implémenter l'authentification pour mon application avec 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 :
Aide-moi à implémenter des vérifications d'autorisation pour mon application
Sécurisez vos points de terminaison API :
  • Ajoutez l’authentification aux points de terminaison sensibles
  • Implémentez des paramètres CORS appropriés
  • Envisagez la limitation du débit
Passez en mode Lite et demandez à Agent :
Comment authentifier correctement les points de terminaison de mon application ?
Agent utilise par défaut des ORM, ce qui aide à prévenir les injections SQL. Si vous écrivez des requêtes de base de données personnalisées :
// Mauvaise pratique : concaténation de chaînes dans les requêtes
db.query(`SELECT * FROM users WHERE username = '${username}'`);

// Bonne pratique : 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 :
Peux-tu ajouter les en-têtes de sécurité à mon application ?

Pratiques de sécurité continues

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

// Bonne pratique : message d'erreur générique
catch (err) {
  console.error(err); // Journaliser en interne
  res.status(500).send('An error occurred');
}
Demandez à Agent :
Aide-moi à implémenter une gestion appropriée des erreurs pour mon 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 :
Aide-moi à sécuriser mes cookies pour mon application
Si votre application permet le téléchargement de fichiers :
  • Restreignez les types et les tailles de fichiers
  • Analysez les logiciels malveillants si possible
  • Stockez les fichiers dans le stockage objet de Replit
  • Générez de nouveaux noms de fichiers plutôt que d’utiliser ceux fournis par l’utilisateur
Demandez à Agent :
Aide-moi à sécuriser mes téléchargements de fichiers pour mon application
Implémentez la limitation du débit pour les points de terminaison API, en particulier ceux liés à l’authentification :
// Exemple de middleware de limitation du 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 :
Aide-moi à implémenter la limitation du débit pour mon application

Liste de contrôle

Voici ce qui précède sous forme de liste de contrôle pour vous aider à maintenir vos pratiques de sécurité.

Sécurité front-end

Mesure de sécuritéDescription
Utiliser HTTPS partoutPrévient les écoutes clandestines 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 changeant d’état
Ne jamais exposer les clés API en front-endLes identifiants API doivent toujours rester côté serveur

Sécurité back-end

Mesure de sécuritéDescription
Fondamentaux de l’authentificationUtiliser des bibliothèques établies, stockage correct des mots de passe (hachage + salage)
Vérifications d’autorisationToujours vérifier les permissions avant d’effectuer des actions
Protection des points de terminaison APIImplémenter 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 les 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 de mitigation DDoS intégrées

Habitudes de sécurité pratiques

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 et tailles de fichiers, et analyser les contenus malveillants
Limitation du débitImplémenter sur tous les points de terminaison API, en particulier ceux liés à l’authentification