Total Security Suite - Firewall, Captcha, 2FA & Scanner. Total Security réunit dans un seul module un pare-feu applicatif, un captcha pour les formulaires de la boutique, l'authentification à deux facteurs (2FA) pour le back-office et les clients, un scanner local de malwares/webshells et un score de sécurité en temps réel qui vous indique quoi améliorer. Tout s'exécute sur votre propre serveur : rien ne quitte votre boutique. Aucun code, aucune modification de thème.
Total Security réunit dans un seul module un pare-feu applicatif, un captcha pour les formulaires de la boutique, l'authentification à deux facteurs (2FA) pour le back-office et les clients, un scanner local de malwares/webshells et un score de sécurité en temps réel qui vous indique quoi améliorer. Tout s'exécute sur votre propre serveur : rien ne quitte votre boutique. Aucun code, aucune modification de thème.
1. Installation
- Dans le back-office, allez dans Modules → Gestionnaire de modules → Ajouter un module et sélectionnez le fichier ZIP du module.
- Une fois le module installé, cliquez sur Configurer. Un court panneau s'ouvre avec un bouton Aller à la configuration qui mène à la page complète.

.local, .test, localhost) sont toujours autorisés. Quand une nouvelle version est disponible, elle s'affiche directement dans le module.Si, à la place de la confirmation, vous lisez « Upload failed », PrestaShop a peut-être désactivé le module sans vous le dire : vos réglages et vos données restent en place. Comment mettre à jour un module, et que faire en cas de « Upload failed ».
2. Configuration: les onglets
La page du module est organisée en onglets en haut de l'écran : Dashboard, Règles du pare-feu, Journal des blocages, Protection des connexions, Captcha, Authentification à deux facteurs, Scanner de malwares et Paramètres.
Dashboard score de sécurité
Un score de sécurité en temps réel avec une note en lettre (A/B/C/D), calculé à partir des réglages de votre boutique, des couches pare-feu/captcha/2FA et du dernier scan de malwares (rien ne quitte votre serveur). En dessous, une Checklist des contrôles de sécurité (exemples visibles : mode debug désactivé en production, HTTPS forcé partout, pare-feu applicatif actif, captcha sur la connexion/l'inscription, authentification à deux facteurs sur le back-office, aucun malware/webshell détecté, nom du dossier back-office non devinable, jeton de sécurité du back-office activé). Les éléments à corriger affichent un raccourci Corriger maintenant qui mène directement au réglage concerné.

Règles du pare-feu
Ajoutez et gérez les listes de règles avec un seul formulaire Ajouter une règle : Liste blanche IP/CIDR (adresses de confiance, qui contournent tous les contrôles), Liste noire IP/CIDR (adresses bloquées), Règles par pays (codes ISO-2), User-agents indésirables (correspondance par sous-chaîne), Motifs d'attaque personnalisés (correspondance par sous-chaîne), et une Liste blanche de motifs (/module/designer/save pour l'adresse d'une page, avec un * final pour les adresses situées en dessous ; ?fc=module&module=designer&controller=save ou ?controller=search pour une page quelle que soit son adresse ; tout autre texte pour une valeur entière. Une entrée ne correspond jamais à une partie d'une valeur : une valeur qui se contente de la contenir est quand même contrôlée). Une bannière affiche votre IP actuelle et vous avertit de la mettre en liste blanche avant d'activer le mode verrouillage ou le back-office réservé aux IP en liste blanche, afin de ne jamais vous retrouver bloqué à l'extérieur.

Journal des blocages
Chaque requête bloquée est enregistrée avec la date, l'IP, le pays, le motif (par ex. user_agent, attack_pattern, ip, rate, login), le détail, l'URI demandée et le user-agent. Filtrez par motif ou par IP, Exporter en CSV, Vider le journal, ou débloquez une IP directement depuis cette page.

Protection des connexions
Surveille les tentatives de connexion au back-office et bloque un compte/une IP après trop de tentatives échouées dans une fenêtre de temps donnée ; vous pouvez débloquer une entrée manuellement. Les tentatives échouées sont comptées sur PrestaShop 1.7, 8 et 9, et une adresse bloquée est refusée avant même la vérification du mot de passe, y compris sur PrestaShop 9. Configurez les seuils dans Paramètres (Protection des connexions au back-office). La connexion des clients pendant la commande (checkout) a elle aussi une limite de tentatives échouées par adresse IP (le double du seuil du back-office, sur la même fenêtre de temps) : au-delà, le client revient à la commande avec un message l'invitant à patienter quelques minutes.

Captcha
- Fournisseur de captcha: choisissez Google reCAPTCHA v2 (case à cocher), reCAPTCHA v3, hCaptcha, Cloudflare Turnstile, ou le fournisseur Lightweight qui ne nécessite aucune clé et reste entièrement sur votre serveur.
- Clé de site / Clé secrète: depuis le tableau de bord du fournisseur choisi, seuil de score reCAPTCHA v3, thème du widget, position du badge, durée de vie du jeton pour le fournisseur Lightweight.
- Formulaires protégés: Connexion, Inscription, Mot de passe oublié, Formulaire de contact, Newsletter, Avis produit, Commande invité (chacun activable/désactivable).
- Avancé: Fail closed (bloquer quand le fournisseur est injoignable), Ignorer le captcha pour les clients connectés, Délai de vérification, Liste blanche d'IP de confiance, vérification du hostname, vérification de l'action.
- Rate limiting: limite les tentatives de captcha échouées avec un maximum et une fenêtre de temps.

Authentification à deux facteurs (2FA)
Codes à usage unique basés sur le temps (Google Authenticator, Authy, 1Password et toute application compatible). Rien ne quitte votre serveur : les secrets sont chiffrés au repos et vérifiés localement.
- Votre compte: activez la 2FA pour le compte avec lequel vous êtes connecté (scannez un QR code, saisissez un code à 6 chiffres).
- Activer la 2FA pour le back-office (personnel) et/ou pour les clients (front-office).
- Forcer la 2FA pour des profils employé spécifiques, par ID (1 = SuperAdmin, 2 = Logisticien, 3 = Traducteur, 4 = Vendeur) ; les profils listés ne peuvent pas utiliser le back-office tant qu'ils ne se sont pas inscrits.
- Fenêtre de tolérance, nombre de codes de secours, nom de l'émetteur affiché dans l'application.
- Employés inscrits et clients inscrits sont listés et peuvent être réinitialisés.

Scanner de malwares
Analyse locale de malwares/webshells : recherche les signatures connues de webshells et de code obfusqué, le code exécutable caché dans les dossiers médias, et les fichiers ajoutés ou modifiés depuis votre base de référence de confiance. Tout s'exécute sur le serveur : aucun fichier, hash ou chemin ne quitte jamais la boutique.
- Métriques: fichiers suspects, fichiers en référence, dernière analyse.
- Lancer l'analyse maintenant et Définir les fichiers actuels comme base de référence de confiance.
- Les résultats sont listés avec la gravité, le quoi, le fichier et le quand.

Paramètres configuration du pare-feu
La configuration propre du pare-feu, regroupée par section.
- Général: Activer le pare-feu ; Derrière un proxy/CDN avec un en-tête de proxy de confiance et des IP/CIDR de proxy de confiance, n'activez cette option que derrière un proxy réellement fiable, sinon les en-têtes IP/pays peuvent être falsifiés.
- Blocage IP/CIDR.
- Blocage par pays: mode liste noire ou liste blanche, codes ISO-2, chemin optionnel vers une base MaxMind GeoLite2 ou un en-tête CDN indiquant le pays, la base n'est jamais fournie avec le module, pour des raisons de licence.
- Bots / user-agents indésirables: activer le blocage par user-agent, bloquer les user-agents vides, sous-chaînes supplémentaires à bloquer fusionnées avec une liste intégrée.
- Rate limiting: nombre maximum de requêtes par fenêtre, durée de la fenêtre en secondes, durée du blocage temporaire.
- Blocage par motifs d'attaque: SQLi/XSS/LFI/probing. Chaque champ des formulaires envoyés est contrôlé ; un envoi de plus de 2 Mo, imbriqué sur plus de 32 niveaux ou qui ne peut pas être lu jusqu'au bout est refusé (motifs du journal
inspection_limitetinspection_error). Une vraie commande reste très en dessous de ces limites ; si l'un de vos modules envoie légitimement des données plus volumineuses depuis la boutique, ajoutez le chemin de son adresse (par exemple/module/designer/save) à la Liste blanche de motifs. - Protection des connexions au back-office: nombre maximum de tentatives échouées, fenêtre de tentative, durée du blocage, autoriser le back-office uniquement depuis les IP en liste blanche.
- Maintenance et journalisation: Mode verrouillage (autoriser uniquement les IP en liste blanche), journaliser les requêtes bloquées, durée de conservation du journal en jours, supprimer toutes les données à la désinstallation.
- Rapport de sécurité hebdomadaire: envoie un court rapport par e-mail ; s'exécute en arrière-plan par petites étapes pour ne jamais ralentir la boutique.

Dans le front-office
Quand le pare-feu bloque une requête, le visiteur voit une simple page 403 « Forbidden, votre requête a été bloquée par le pare-feu du site » : les bots et les scanners n'atteignent jamais votre boutique.

3. Vérifier que tout fonctionne
- Ouvrez le Dashboard et consultez votre score de sécurité et la checklist.
- Envoyez une requête avec un user-agent semblable à celui d'un scanner (ou une URL de probing) et vérifiez que vous obtenez la page de blocage 403 et une nouvelle ligne dans le Journal des blocages.
- Après plusieurs échecs de connexion au back-office, le compte/l'IP est bloqué dans Protection des connexions.
- Activez le captcha et vérifiez qu'il apparaît sur le formulaire de connexion/d'inscription.
- Configurez la 2FA sur votre compte et reconnectez-vous avec un code à 6 chiffres.
- Lancez le Scanner de malwares et consultez les résultats.
4. FAQ
Est-ce que cela ralentit la boutique ?
Non : le pare-feu s'exécute en premier avec des vérifications légères et indexées ; le scanner et le rapport hebdomadaire s'exécutent en arrière-plan.
Est-ce que je risque de me retrouver bloqué à l'extérieur ?
Mettez d'abord votre IP actuelle en liste blanche (la page vous avertit ; à l'installation, le module ne met en liste blanche que votre adresse publique, jamais les adresses locales comme 127.0.0.1/::1 ni celles du proxy) ; n'activez le mode verrouillage ou le back-office réservé aux IP en liste blanche qu'après. Si le module voit votre connexion avec une adresse locale ou privée (par exemple 127.0.0.1), le back-office vous avertit : derrière un proxy, un répartiteur de charge ou un CDN, tous les visiteurs apparaissent probablement avec cette même adresse. Activez alors l'option Derrière un proxy/CDN dans Paramètres (et ajoutez l'adresse du proxy aux proxys de confiance si ce n'est pas 127.0.0.1).
modules/cll_totalsecurity, videz le cache de PrestaShop juste après : videz le dossier var/cache/prod ou lancez php bin/console cache:clear --env=prod avec l'utilisateur du serveur web. Tant que le cache n'est pas vidé, le back-office répond par une erreur 500 ; la boutique continue de fonctionner. Désactiver ou désinstaller le module depuis le Gestionnaire de modules ne pose pas ce problème.Des données quittent-elles mon serveur ?
Non : le pare-feu, l'option de captcha Lightweight, les secrets 2FA et le scanner de malwares s'exécutent tous localement sur votre serveur.
Remplace-t-il des modules séparés de pare-feu / captcha / 2FA ?
Oui : c'est la suite de sécurité unique et unifiée.
Dois-je modifier mon thème ?
Non : il fonctionne via les hooks standards et est compatible avec tous les thèmes.
