Historique des modifications — PrestaWard Facet Shield
Ce journal des modifications résume, version par version, l'impact pour les boutiques et les équipes de commerce électronique.
0.1.16
- Nouveau : limites par catégorie et par niveau du catalogue. Une catégorie, ou toutes celles d’un même niveau, peut disposer de ses propres limites (taille de la requête, facettes, valeurs totales et valeurs au sein d’une facette) ; une limite laissée vide utilise le niveau suivant et les limites globales restent la base. Une politique signée par Integrity limite également celles des catégories.
- Nouveau : limites suggérées par catégorie. Le panneau répertorie les catégories nécessitant une limite différente, en indiquant le nombre de requêtes à partir duquel le blocage s’appliquerait actuellement ainsi que la suggestion, et permet d’appliquer une limite à une catégorie d’un simple clic. Il reprend la règle stricte de la suggestion globale : une catégorie qui semble relever d’une exploration automatisée ne fait jamais l’objet d’un assouplissement.
- Nouveau : Protection pilote par catégorie. Lorsque la boutique est en mode « Observation », les catégories de votre choix peuvent bloquer l’accès tandis que les autres se contentent d’observer. Cela nécessite une politique Integrity signée et valide (sans laquelle Facet Shield se contente d’observer, comme auparavant) ainsi qu’une confirmation explicite par catégorie ; il suffit d’un clic pour mettre fin au mode pilote.
- Nouveau : limite de requêtes par adresse, facultative. Compte les requêtes filtrées par minute et par adresse (30 par minute par défaut, entre 5 et 600) ; au-delà de cette limite, en mode « Protection », l’adresse est temporairement bloquée (une heure par défaut, jusqu’à 24 heures) avec le code d’état HTTP 429 et l’en-tête « Retry-After », tandis qu’en mode « Observation », elle est simplement comptabilisée. Aucune adresse IP n’est enregistrée : seul un hachage avec clé est conservé, qui est supprimé peu après la fin du blocage ; il n’y a donc pas de liste noire permanente. L’adresse est celle que PrestaShop résout (à l’aide des proxys de confiance) ; les adresses et plages de votre liste blanche ne sont jamais comptabilisées et un problème de base de données ne bloque jamais un client.
- Nouveau : moteurs de recherche vérifiés. Dans la section « Protection », un Googlebot ou un Bingbot dont les DNS inverses et directs correspondent aux serveurs officiels reçoit une réponse allégée avec « noindex » et l’URL canonique de la catégorie au lieu d’un code 403 ; ainsi, l’URL du filtre est retirée de l’index et aucune requête SQL de facettes n’est exécutée. Seuls ceux qui se présentent comme l’un de ces moteurs de recherche sont interrogés ; le verdict est mis en cache (24 heures s’il est valide, une heure dans le cas contraire) et les requêtes sont limitées par minute pour l’ensemble des boutiques.
- Signes de faux positifs : les requêtes qui dépassent les limites sont également comptabilisées lorsqu’elles proviennent d’un client connecté, d’un robot d’indexation vérifié ou d’une rafale rapide de dix requêtes ou plus par minute, et les statistiques indiquent ces trois chiffres avec leur proportion respective. Les rafales sont mesurées tant que la limite par adresse est activée.
- Nouveau : alertes par e-mail, facultatives, via les paramètres de messagerie de la boutique : augmentation rapide de la taille du cache (au maximum une fois par jour), pics de requêtes bloquées (au maximum toutes les six heures) et un récapitulatif hebdomadaire distinct, pour un maximum de cinq destinataires de votre choix et avec un bouton d’envoi d’e-mail de test. Pas de PDF ni de liens dans le texte. Elles sont envoyées depuis la maintenance en arrière-plan, jamais lors de la mise à disposition d’une page à un client.
- Nouveau : vidage automatique du cache, facultatif. Lorsque le cache de la recherche par facettes dépasse la taille que vous avez choisie, Facet Shield demande à ps_facetedsearch de vider son propre cache à l’aide de la méthode proposée par ce module, au maximum une fois par jour, et consigne cette opération dans le journal d’assistance. Si la version installée ne dispose pas de cette méthode, rien n’est modifié. Facet Shield continue de ne jamais effacer les tables d’un autre module.
- Avertissement concernant les versions vulnérables d’ ps_facetedsearch, d’après un petit tableau inclus dans le module (aucun téléchargement n’est nécessaire) : les versions 3.0.0 à 4.0.3 sont concernées par la faille CVE-2026-54159, corrigée dans la version 4.0.4, et le panel recommande de procéder à la mise à jour.
- Le panneau est organisé en onglets (Résumé, Limites et catégories, Trafic et bots, Statistiques, Cache et maintenance, et Configuration). L’onglet Résumé affiche uniquement le mode, les dernières 24 heures, une action principale et, au maximum, une ligne d’alerte ; seul l’onglet ouvert est pris en compte dans le calcul. Le tableau de bord d’assistance de GO ON Agency dispose de son propre onglet, « Assistance », toujours le dernier, et l’état d’Integrity apparaît à la fin de tous les onglets. L’en-tête affiche désormais le logo de GO ON Agency.
- L'onglet « Limites et catégories » est organisé en fiches : limites globales, impact des suggestions avec des boutons de taille normale et tableau des règles par catégorie avec un formulaire permettant d'en ajouter une autre. L'onglet « Cache » utilise des blocs repliables et une seule ligne de statistiques.
- Les e-mails d'alerte affichent le logo de votre boutique dans l'en-tête (avec le nom de la boutique comme texte alternatif) et un pied de page commun comportant le logo de GO ON Agency et la signature « PrestaWard by GO ON Agency », sans liens ni coordonnées. Le logo du pied de page est un fichier provenant du module lui-même et mis à disposition depuis vos boutiques.
- Aspect unifié du panneau dans les quatre modules PrestaWard : en-têtes de section, fiches de formulaire aux bordures neutres et blocs repliables communs, statistiques sur une seule ligne et un logo GO ON Agency plus grand dans l’en-tête. Le bouton principal adopte désormais une couleur unie conforme à l’identité visuelle de la marque, sans dégradé.
- Corrige le fait que, dans PrestaShop 9, le thème d'administration affichait les onglets soulignés comme des liens et les titres de section en majuscules. Les styles communs neutralisent cet effet uniquement au sein du panneau PrestaWard ; ainsi, PrestaShop 1.7 et 8 s'affichent comme auparavant.
- Corrige le fait que, dans PrestaShop 1.7, la feuille de style du module était ignorée lorsqu’elle était enregistrée avec le numéro de version dans l’adresse. Désormais, le fichier est vérifié et enregistré sans paramètres, de sorte que le nouveau thème s’affiche dans les versions 1.7, 8 et 9.
- Corrige le fait que, dans PrestaShop 9, les formulaires d’action du panneau et la synchronisation avec Integrity vérifiaient le jeton de sécurité à l’aide d’une méthode que PrestaShop 9 n’utilise pas, ce qui pouvait entraîner leur rejet. La validation s’effectue désormais via le service de PrestaShop 9 ; dans PrestaShop 1.7 et 8, la vérification reste inchangée.
- Lorsque la connexion à Integrity ne peut pas être mise à jour pour le moment, le panneau affiche un seul message : la connexion enregistrée reste valide et une nouvelle tentative sera effectuée automatiquement. Les libellés de tous les onglets sont traduits dans les neuf langues.
- Corrige la dégradation de la connexion avec Integrity dans le contexte « toutes les boutiques » : l’identité de l’installation est désormais lue en une seule fois à partir de la portée globale (ou de la boutique qui la stocke) quel que soit le contexte ; la mise à jour transfère vers la portée globale une identité stockée dans une boutique sans la régénérer et, si elle ne peut pas être lue, l’état d’Integrity reste inchangé.
- Corrige le décalage de quelques pixels du tableau de l'onglet « Cache » sur les ordinateurs de bureau : le conteneur occupe désormais l'espace entre ses marges.
- Tous les nouveaux textes sont disponibles dans les neuf langues du module. La mise à jour ajoute un petit tableau et trois compteurs aux statistiques de requêtes et n’active rien en soi ; le contrat avec l’Integrity API reste inchangé et seule une politique signée valide peut encore renforcer les limites.
0.1.15
- Les statistiques de requêtes ne continuent plus à croître indéfiniment : toutes les heures, les enregistrements par minute datant de plus d’une heure sont regroupés en un seul par heure sans modifier les totaux ni les graphiques, et ceux antérieurs à la nouvelle durée « Conservation des statistiques (jours) » (90 par défaut, comprise entre 30 et 365) sont supprimés par petits lots en arrière-plan, jamais pendant qu’une page est servie à un client.
- Le diagnostic des bots ne cesse plus de collecter des échantillons une fois le seuil de 500 atteint : il conserve les plus récents et supprime les plus anciens. Ce comportement est contrôlé par le paramètre « Échantillons de diagnostic à conserver » (500 par défaut, entre 50 et 5 000).
- Nouveau panneau « Limites suggérées » : à partir du trafic enregistré en mode Observation, il propose une valeur pour chaque limite (taille de la requête, facettes, valeurs totales et valeurs dans une facette), indique le nombre de requêtes bloquées par les limites actuelles et celui que bloquerait la suggestion, et explique la cause principale, par exemple quel filtre de quelle catégorie entraîne le plus de dépassements. Un bouton permet d’appliquer les quatre limites suggérées à la boutique sélectionnée sans changer de mode.
- Les suggestions ne sont jamais plus strictes que la limite par défaut, elles n’assouplissent jamais une limite et respectent la politique d’Integrity signée lorsqu’elle est plus stricte. Si quelques catégories concentrent les requêtes dépassant une limite, la suggestion est calculée sur le reste ; le tableau de bord indique quelle part du dépassement provient de combien de catégories et cette limite n’est pas modifiée lors de l’application.
- Le panneau de cache de la recherche par facettes distingue les tables de cache des tables d’index, affiche l’évolution de leur taille au cours des derniers jours avec une alerte en cas de croissance rapide, répertorie les boutiques où ps_facetedsearch est manquant ou désactivé et renvoie vers sa configuration native. Facet Shield se contente de lire ces tables : il ne les modifie ni ne les supprime jamais.
- Le panneau est nettement plus rapide dans les boutiques enregistrant un trafic important : avec plus d’un demi-million d’enregistrements, le temps de chargement passe d’environ 20 secondes à quelques secondes, et à une fraction de seconde si vous le rouvrez dans les dix minutes. Les chiffres affichés ne changent pas.
- Tous les nouveaux textes sont disponibles dans les neuf langues du module.
- Le panneau d’assistance et de diagnostic est placé juste avant la section Integrity, comme dans les autres modules PrestaWard, et dans le contexte « toutes les boutiques », il ne disparaît plus : cela indique qu’il faut sélectionner une boutique.
- Se synchronise avec Integrity à chaque ouverture du tableau de bord, via une requête en arrière-plan qui ne ralentit jamais le chargement de la page, à raison d’au maximum une fois par minute et par boutique.
0.1.14
- Cesse de réessayer l’inscription à Integrity lorsque la clé d’enregistrement de la boutique change et affiche un message d’avertissement clair.
- Renouvelle la politique Integrity signée avant son expiration et conserve la politique en vigueur ainsi que ses limites en cas d'échec du renouvellement.
- Une politique Integrity signée ne peut que renforcer les limites configurées dans la boutique, jamais les assouplir : pour la taille, le nombre de facettes, de valeurs et de valeurs par facette, c’est la plus petite valeur entre votre limite et celle de la politique qui s’applique, et c’est vous qui décidez du mode (Observation ou Protection).
- Corrige la clé de politique incluse afin qu’elle fonctionne sous PHP 7.1 et 7.2.
- Ajoute le panneau d’assistance de GO ON Agency en neuf langues, avec un rapport de diagnostic téléchargeable qui ne contient pas de données clients et n’est pas envoyé automatiquement. Seul un employé disposant d’une autorisation de modification et ayant sélectionné une boutique peut le télécharger.
- Déclare la compatibilité à partir de PrestaShop 1.7.7.0, la version la plus ancienne testée.
0.1.13
- Corrige le test d'inscription et les tâches du Back Office dans PrestaShop 9.
- Accepte les deux formats valides d’URL de test de propriété avec une validation stricte.
- Améliore le diagnostic et les nouvelles tentatives d'inscription dans Integrity.
0.1.12
- La désinstallation supprime également la table des exclusions par catégorie ainsi que toutes les clés de configuration d’Integrity (phase d’installation, test d’inscription, identifiant scellé et clés), sans laisser de trace.
- Ajoute les
index.php de protection manquants ainsi que la vérification d’accès direct via _PS_VERSION_ dans le contrôleur du Back Office et dans les trois derniers scripts de mise à jour, tout comme dans les autres points d’entrée du module. - Adopte le système de design partagé de PrestaWard : le tableau de bord du Back Office utilise l’en-tête sombre commun, l’indicateur d’état unifié (Désactivé/Observe/Protège) et le panneau « Surveillance GO ON », servis depuis une feuille de style unique, partagée et hébergée en local.
0.1.11 — mise à jour de sécurité
- Les exclusions par catégorie ne font qu’éviter l’analyse normale de complexité : les signatures complètes de sérialisation PHP continuent d’être analysées, enregistrées et bloquées systématiquement en mode Protection.
- La documentation précise que
ps_facetedsearch 4.0.4 ou une version ultérieure est nécessaire pour corriger la vulnérabilité CVE-2026-54159 ; Facet Shield reste un dispositif de défense en profondeur, et ne remplace pas le correctif officiel.
0.1.10
- Simulateur d'URL local ou
q, tendance quotidienne basée sur les agrégats existants et les exportations CSV limitées. - Exclusions vérifiables par catégorie, avec motif obligatoire et suppression logique ; les adresses IP et les user-agents ne sont pas exclus.
- La première activation de la Protection nécessite des preuves issues de l’Observation et calcule une estimation prudente de l’impact avec la politique candidate ; en l’absence de requêtes observées, elle ne permet pas d’activer le blocage.
- Tous les répertoires de production du pack contiennent un fichier
index.php qui met fin à l'exécution, y compris views/js. - Ce guide explique comment réinscrire Integrity par boutique après avoir effectué une rotation de
_COOKIE_KEY_, sans récupérer ni partager la clé précédente. - Protection supplémentaire contre les en-têtes de sérialisation PHP complets dans les requêtes de facettes, sans bloquer les valeurs normales contenant du texte telles que
O:. - Avis configurable par boutique lorsque l'estimation du cache de recherche à facettes dépasse le seuil défini ; le module ne supprime ni ne met à jour quoi que ce soit automatiquement.
- Les tentatives de reconnexion et les « heartbeats » d’Integrity ne s’exécutent plus au sein du rendu synchrone d’aucune page du Back Office : ils sont programmés via une requête asynchrone authentifiée et limitée.
- La requête du résumé d'événements hérité est supprimée sans effacer les données historiques, et le panneau de mises à jour existant est conservé comme unique avis de nouvelles versions.
0.1.9
- L'inscription utilise désormais le répartiteur de modules natif de PrestaShop et ne dépend plus des URL conviviales, des règles de
.htaccess ou des caches de routes. - La mise à jour à partir des versions antérieures corrige de manière idempotente les hooks nécessaires sans supprimer les politiques ni les statistiques.
- À l'ouverture du tableau de bord, le système vérifie automatiquement s'il existe une nouvelle version, avec un cache de six heures et sans bloquer le Back Office si le manifeste ne répond pas.
- Fonctionnement validé sur PrestaShop 1.7, 8 et 9.
0.1.8
- La protection se limite aux contrôleurs réels de catégorie et de recherche, ce qui évite de bloquer les paramètres
q qui ne relèvent pas des facettes. - Les requêtes
HEAD bloquées renvoient uniquement des en-têtes, sans corps. - Le diagnostic identifie l’agent tel qu’il est déclaré et explique correctement l’extrait abrégé de l’agent utilisateur qui est conservé de manière facultative.
- Integrity se présente avec un minimum d'informations sur la connexion et la synchronisation, sans détails internes susceptibles de dérouter l'utilisateur.
- Compatibilité fonctionnelle validée sur PrestaShop 1.7, 8 et 9.
0.1.7
- Heartbeat automatique sans cron : le trafic de la boutique déclenche une requête locale limitée et le serveur confirme sa présence auprès de l’Integrity API sans exposer les identifiants au navigateur.
- Verrouillage atomique par boutique, intervalle de six heures et délai d’attente de quinze minutes après les échecs afin d’éviter les envois en double.
- La synchronisation manuelle d’Integrity renouvelle également le « heartbeat ».
- Compatibilité validée avec PrestaShop 1.7, 8 et 9.
0.1.6
- Heartbeat authentifié, tentatives automatiques et diagnostic détaillé de la connexion avec l’Integrity API.
- Diagnostic facultatif également disponible en mode Observation, avec identification de l’agent, filtres par bot et motif, pagination et échantillon restreint issu de la combinaison des facettes.
- Conservation contrôlée par l’administrateur : nombre d’échantillons, espace estimé et suppression manuelle depuis le Back Office.
- Indicateurs visuels et en lecture seule concernant la taille, le nombre estimé d'enregistrements et les tables du cache des facettes.
- Interface réorganisée : modes et activation de la Protection sous « Ce qu’il fait », sections délimitées et Integrity API reléguée à la fin.
- Pas d’adresse IP, de cookies ni d’URL complètes ; textes disponibles en neuf langues.
- Installation, blocage, diagnostic, cache, désinstallation et réinstallation vérifiés sur PrestaShop 1.7, 8 et 9.
0.1.5
- Inscription automatique et non bloquante dans l’Integrity API via un test de vérification de la boutique.
- L'installation ne nécessite ni compte, ni clé API, ni étape d'enregistrement manuel.
- Les politiques signées ont été vérifiées à l'aide d'ancres de confiance incluses dans la version.
0.1.4
- Histogrammes de complexité et de comptage atomique pour toutes les requêtes analysées.
- Limites des valeurs par facette, requêtes mal formées et contexte de requête restreint.
- Statut Observation, début de la période statistique et réinitialisation protégée par boutique.
- Motifs et statistiques traduits.
0.1.3
- Indicateurs des requêtes analysées, des requêtes dans la limite, des dépassements et des blocages réels.
- Agrégats par boutique et par minute, sans adresse IP, URL, agent utilisateur ni valeurs sélectionnées.
- Sélecteur de mode accessible et shell visuel PrestaWard pour ordinateur de bureau et mobile.
0.1.2
- Identité d'installation et de boutique préparée pour Integrity API.
- Politique signée avec le dernier statut valide par boutique et retour sécurisé au mode Observation.
- État de la connexion et nouvelle tentative manuelle depuis le Back Office, sans appel depuis le Front-Office.