Comment sécuriser le back-office PrestaShop avec la 2FA

Un guide marchand pour activer la double authentification du back-office PrestaShop, choisir les profils obligatoires, gérer les appareils de confiance et récupérer un compte bloqué.

Comment sécuriser le back-office PrestaShop avec la 2FA

Un mot de passe partagé, un lien de phishing, un ancien prestataire qui garde son accès : une seule fuite ouvre les commandes, les prix, les fichiers clients et les comptes administrateur. La double authentification ajoute un code temporaire après le mot de passe. Ce guide montre comment l'activer, quels profils rendre obligatoires, comment éviter un code à chaque connexion et comment récupérer un compte quand un téléphone disparaît.

La 2FA est-elle native dans PrestaShop, et pour qui ce module est-il fait ?

Sur les versions prises en charge, le back-office ne demande que le mot de passe ; ce module ajoute l'étape du code TOTP. Il fonctionne sur PrestaShop 1.7.8, 8.0+ et 9.0+ avec une seule archive et demande PHP 7.4 minimum.

Il s'adresse aux boutiques où plusieurs personnes ouvrent l'administration : salariés, associés, agence, freelance sur le thème ou les modules. Il aide aussi une boutique tenue par une seule personne depuis un portable ou un réseau partagé, car un mot de passe volé suffit.

Remettez-le à plus tard si votre back-office n'est joignable que par un VPN et que vous êtes le seul à l'utiliser. Le module ne remplace pas ce cloisonnement : il ajoute une barrière quand le mot de passe tombe.

Ce que le module ne fait pas

Il ne limite pas les essais de mot de passe : le blocage porte sur les codes erronés de la seconde étape. Sur PrestaShop 1.7, trois anciens scripts autonomes (backup.php, pdf.php et get-file-admin.php) échappent au contrôle ; la page de configuration les signale et invite à les supprimer. Le module n'envoie ni SMS ni e-mail, ne bloque pas la boutique et ne remplace pas un pare-feu applicatif. Il ne protège que le back-office. Pour le reste, Security Audit Pro audite la sécurité de la boutique, et Magic Login remplace le mot de passe client par un code à 6 chiffres ou un lien.

Comment activer la 2FA avec Google Authenticator, étape par étape ?

Ouvrez Mon authentification à deux facteurs dans le menu de votre profil, cliquez sur Configurer, scannez le QR code, saisissez le code affiché par l'application, puis conservez vos codes de secours.

  1. Installez une application d'authentification sur votre téléphone.
  2. Scannez le QR code. Sur le téléphone, Ouvrir dans l'application sur ce téléphone évite le scan ; sinon, saisissez la clé sous le QR code.
  3. Entrez le code à 6 chiffres affiché par l'application, puis cliquez sur Activer l'authentification à deux facteurs.
  4. Copiez, téléchargez ou imprimez vos 10 codes de secours, cochez J'ai enregistré mes codes de secours, puis cliquez sur Continuer. Ils ne seront plus affichés.

Le module suit TOTP (RFC 6238) : un code de 6 chiffres renouvelé toutes les 30 secondes, généré hors ligne. Google Authenticator, Microsoft Authenticator, Authy, 1Password et Bitwarden conviennent, comme toute application TOTP. Un code n'est accepté qu'une fois.

Les réglages se trouvent dans Modules > Gestionnaire de modules > Configurer. Le panneau contient les boutons « Ouvrir le tableau de bord » et « Mon authentification à deux facteurs ». Un super-administrateur active sa propre 2FA avant de réinitialiser un collègue : le module s'en sert pour confirmer qui agit. La documentation détaille chaque réglage.

La page Configurer d'une boutique sous licence : les boutons Ouvrir le tableau de bord et Mon authentification à deux facteurs mènent aux deux écrans de gestion.
La page Configurer d'une boutique sous licence : les boutons Ouvrir le tableau de bord et Mon authentification à deux facteurs mènent aux deux écrans de gestion.

Comment rendre la 2FA obligatoire pour certains profils sans bloquer l'équipe ?

Choisissez les profils dans Obligatoire pour ces profils et définissez un Délai de grâce : chaque employé concerné dispose de ces jours pour installer son application avant que l'écran de configuration de la 2FA ne s'ouvre d'office.

Le délai va de 0 à 365 jours (7 par défaut) et court à partir du jour où le profil devient obligatoire. Pendant cette période, un bandeau indique les jours restants et renvoie à Configurer maintenant ; l'écran de configuration garde un lien Pas maintenant. À la fin, l'employé ne peut plus ouvrir le back-office tant qu'il n'a pas terminé la configuration. Avec 0, l'écran s'ouvre dès la page suivante.

Visez d'abord les profils qui touchent aux paiements, aux modules, aux exports ou à la création de comptes, souvent SuperAdmin. Les autres employés peuvent activer la 2FA depuis leur menu sans y être forcés. Le tableau de bord, réservé aux super-administrateurs, compte les employés, les protégés, les configurations obligatoires en attente et les comptes bloqués ; la liste affiche « Protégé », « Obligatoire avant le … », « Obligatoire, à configurer maintenant » ou « Désactivée ».

Une fois la protection active, Réinitialiser et Débloquer demandent votre propre code dans un panneau de confirmation, et chaque action est inscrite au journal.

Comment éviter un code à chaque connexion avec les appareils de confiance ?

Cochez Se souvenir de cet appareil : ce navigateur ne redemande pas de code pendant 30 jours par défaut, et une session non mémorisée reste vérifiée pendant 12 heures.

Le réglage « Se souvenir d'un appareil pendant » va de 0 à 365 jours. Chaque employé voit ses appareils dans Mon authentification à deux facteurs (navigateur, système, dernière utilisation) et peut retirer ceux qu'il n'utilise plus. La limite est de 20 appareils par employé ; Retirer tous les appareils vide la liste.

Sur un navigateur non mémorisé, le réglage « Redemander le code après » fixe la durée de la session vérifiée : de 1 à 168 heures (12 par défaut). La déconnexion l'annule. Le cookie est HttpOnly et SameSite=Lax, et reste indépendant de l'adresse IP, sauf si vous activez Lier un appareil de confiance à son adresse IP.

Sur un poste partagé, réglez la durée de confiance à 0 : la case disparaît et la vérification revient après la session. Sur un poste fixe, la valeur par défaut évite un code quotidien. Le réglage Cocher « se souvenir de cet appareil » par défaut présélectionne la case.

Que faire quand un employé perd son téléphone ?

Il se connecte avec un de ses 10 codes de secours, puis change de téléphone ; sans code, un super-administrateur clique sur Réinitialiser dans le tableau de bord et confirme avec son propre code.

Les codes de secours sont à usage unique et conservés sous forme de hash. Sur la page du code, le lien Utiliser un code de secours ouvre le champ correspondant. Depuis Mon authentification à deux facteurs, Changer de téléphone relance la configuration et demande un code de l'application actuelle ou un code de secours ; Créer de nouveaux codes de secours annule les anciens, avec une alerte quand il en reste peu.

Un samedi soir, un salarié casse son téléphone avant une expédition : il se connecte avec un code de secours, lance Changer de téléphone et scanne le QR code sur le nouveau. S'il a épuisé ses codes, le super-administrateur clique sur Réinitialiser et confirme avec son code ; l'employé devra la configurer de nouveau si son profil est obligatoire.

Deux voies restent ouvertes quand le back-office est inaccessible : la commande php bin/console wepresta:2fa:disable --employee=ID_OU_EMAIL supprime la 2FA d'un employé, --all la suspend pour toute la boutique et --dry-run simule l'action. Le fichier vide DISABLE_2FA dans le dossier du module suspend la demande de code pour tout le monde tant qu'il existe ; un bandeau rouge le rappelle aux super-administrateurs. Supprimez-le pour rétablir la protection.

Combien de codes erronés avant le blocage ?

Cinq codes erronés bloquent le compte 15 minutes par défaut ; les deux valeurs se règlent, et le blocage reste enregistré en base après une nouvelle connexion au mot de passe.

Le réglage Codes erronés avant blocage accepte de 1 à 20 essais, et le réglage Durée du blocage de 1 à 1440 minutes. Le message indique le temps restant : Trop de codes erronés. Réessayez dans 15 minutes. Un code déjà utilisé est refusé avec Ce code a déjà été utilisé, et un code faux affiche Ce code n'est pas valide, avec le nombre d'essais restants.

Le journal, réservé aux super-administrateurs, liste la date, l'employé, l'adresse IP et le détail : codes acceptés ou erronés, codes de secours, blocages, changements de téléphone et réinitialisations. Il se filtre par employé et ne contient aucun code ni secret. Le réglage « Conserver le journal pendant » va de 7 à 3650 jours (90 par défaut) ; la purge supprime les lignes plus anciennes une fois par jour.

Que se passe-t-il si la licence expire ou si le serveur est injoignable ?

Sans licence valide, le module se désactive sur toutes les boutiques : aucun code n'est demandé, ses écrans de gestion se ferment, mais les inscriptions, les codes de secours, les appareils, les réglages et le journal sont conservés. Si le serveur est seulement injoignable, une tolérance de sept jours s'applique.

C'est la règle de la version 2.0.1 : une licence suspendue ou révoquée, une clé absente, un domaine inconnu ou une signature invalide coupent la double authentification. La page de configuration reste accessible ; saisissez la Clé de licence et le Secret de licence, puis cliquez sur Activer la licence. Dès que la licence est valide, le module s'active et redemande le code à la page suivante. Personne ne se réinscrit ; les appareils de confiance restent valides.

Licence expirée : le bandeau explique qu'aucun code n'est demandé et le formulaire Clé de licence / Secret de licence reste accessible depuis Configurer.
Licence expirée : le bandeau explique qu'aucun code n'est demandé et le formulaire Clé de licence / Secret de licence reste accessible depuis Configurer.

À la fin d'un abonnement, la protection reste active sept jours après la date enregistrée. Ensuite, le module interroge le serveur au plus une fois par heure, avec des délais courts. Une réponse temporaire — erreur interne, trop de requêtes, horloge décalée — ne désactive rien : la tolérance de sept jours court à partir du premier échec. Une réponse définitive (licence expirée ou révoquée, domaine inconnu, signature invalide) s'applique immédiatement. En multiboutique, activez la licence depuis Toutes les boutiques : le module est actif partout ou nulle part.

Pour passer de la 2.0.0 à la 2.0.1, sauvegardez la boutique, téléversez l'archive dans Modules > Gestionnaire de modules et laissez PrestaShop faire la mise à jour. Les inscriptions, les codes de secours, les appareils, les réglages et le journal sont conservés. Vérifiez ensuite la licence dans Configurer.

Questions fréquentes

Quelles applications d'authentification fonctionnent avec le module ?
Toutes les applications TOTP conviennent : Google Authenticator, Microsoft Authenticator, Authy, 1Password, Bitwarden et leurs équivalents. Le module suit la norme TOTP (RFC 6238) et ne dépend d'aucun fournisseur. Le QR code se scanne avec l'application ; sur un téléphone, le bouton Ouvrir dans l'application sur ce téléphone ou la clé affichée sous le QR code évitent le scan. Chaque employé choisit son application, sans outil imposé.
La 2FA fonctionne-t-elle sur PrestaShop 1.7, 8 et 9 ?
Le module fonctionne sur PrestaShop 1.7.8, 8.0+ et 9.0+, avec PHP 7.4 minimum et une seule archive. PrestaShop 1.7.7 et les versions antérieures ne sont pas prises en charge. Sur PrestaShop 1.7, trois anciens scripts autonomes (backup.php, pdf.php et get-file-admin.php) échappent au contrôle ; la page de configuration les signale et invite à les supprimer.
Que se passe-t-il si la licence du module expire ou devient invalide ?
Une licence expirée ne désactive le module qu'après sept jours ; une licence suspendue ou révoquée, un domaine inconnu ou une signature invalide le désactivent aussi. S'il est seulement injoignable, le module interroge le serveur au plus une fois par heure, avec des délais courts, et une réponse temporaire — erreur interne, trop de requêtes ou horloge décalée — ne le désactive pas : la tolérance de sept jours court à partir du premier échec. Les inscriptions et les réglages restent intacts.
Peut-on dispenser de code les adresses IP du bureau ?
Le module ne propose pas de liste d'adresses IP dispensées de code. Pour éviter une saisie à chaque connexion, utilisez l'appareil de confiance de 30 jours, éventuellement lié à l'adresse IP pour un contrôle plus strict. Une adresse IP peut changer ou être usurpée ; le module traite donc l'appareil et la session, pas le réseau.
Combien de temps un code reste-t-il valide ?
Un code TOTP est valide 30 secondes. Le module accepte un décalage d'une période de 30 secondes entre le téléphone et le serveur, et refuse un code déjà utilisé. La vérification reste ensuite valable 12 heures par défaut sur un navigateur non mémorisé, tant que la session reste ouverte, ou 30 jours avec un appareil de confiance (valeur par défaut). Ces deux durées se règlent dans les paramètres du module.
Comment réinitialiser la 2FA d'un employé qui a quitté l'entreprise ?
Réinitialisez son compte depuis le tableau de bord avec le bouton Réinitialiser, confirmé par votre propre code : sa 2FA est supprimée et son ancien téléphone ne donne plus accès. Si vous supprimez sa fiche employé, le module efface son secret, ses codes de secours et ses appareils de confiance ; le journal reste jusqu'à la fin de sa durée de conservation.

Produits de cet article

Trouvez le module dont votre boutique a besoin

Voir les modules