Aller au contenu principal

Protection du flux — Authentification HTTP de base

Protégez vos fichiers XML de flux produits avec un identifiant et un mot de passe afin que seuls les robots autorisés — comme le Gestionnaire de catalogues de Facebook — puissent les télécharger.

remarque

Disponible depuis la v2.4.5

Présentation

Par défaut, vos fichiers de flux générés sont accessibles publiquement à quiconque connaît l'URL. Pour la plupart des boutiques, cela ne pose pas de problème, mais vous pouvez souhaiter restreindre l'accès pour des raisons de confidentialité, pour empêcher des concurrents de scraper vos prix, ou pour respecter la politique d'une plateforme.

Lorsque vous activez la protection du flux, le module écrit un fichier .htaccess et un fichier .htpasswd directement dans le dossier feeds/ à l'intérieur du répertoire du module. Apache (et les serveurs compatibles comme LiteSpeed) appliquent alors l'authentification HTTP de base sur chaque fichier .xml de ce dossier. Toute requête sans identifiants valides reçoit une réponse 401 Unauthorized.

Le Gestionnaire de catalogues de Facebook et Instagram prend pleinement en charge cette méthode : vous intégrez les identifiants directement dans l'URL de récupération planifiée fournie à Facebook, et les robots les transmettent automatiquement à chaque actualisation.

Apache/LiteSpeed uniquement. Le mécanisme .htaccess n'est pas pris en charge par Nginx. Si votre serveur utilise Nginx, cette fonctionnalité ne restreindra pas l'accès. Consultez la section Prérequis serveur ci-dessous.

Activer la protection

  1. Allez dans Modules > Gestionnaire de modules, trouvez Facebook & Instagram Product Catalogue Feed Pro et cliquez sur Configurer.
  2. Cliquez sur l'onglet Feed Protection.
  3. Réglez Protéger l'URL des flux ? sur Oui.
  4. Saisissez un Utilisateur et un Mot de passe.
  5. Cliquez sur Enregistrer la configuration.

Dès l'enregistrement, le module crée (ou écrase) .htpasswd et .htaccess dans le dossier feeds/. Le mot de passe est haché avec bcrypt avant d'être écrit — la valeur en clair n'est jamais stockée sur le disque.

Onglet Feed Protection affichant le bouton Protéger l'URL des flux, et les champs Utilisateur et Mot de passe

ChampValeursDéfautDescription
Protéger l'URL des flux ?Oui / NonNonÉcrit .htaccess et .htpasswd dans le dossier des flux lorsqu'activé. Les supprime lorsque désactivé.
UtilisateurToute chaîne(vide)Le nom d'utilisateur requis pour accéder aux fichiers de flux.
Mot de passeToute chaîne(vide)Le mot de passe. Stocké sous forme de hachage bcrypt dans .htpasswd — jamais en texte clair.

Les champs Utilisateur et Mot de passe doivent tous deux être renseignés avant de pouvoir activer la protection. Si l'un d'eux est vide au moment de l'enregistrement avec le bouton activé sur Oui, le module affiche une erreur et laisse la protection désactivée.

Pour désactiver la protection ultérieurement, réglez Protéger l'URL des flux ? sur Non et enregistrez. Le module supprime .htaccess et .htpasswd du dossier des flux afin que les fichiers XML redeviennent accessibles publiquement.

Ajouter vos identifiants dans le Gestionnaire de catalogues Facebook

Le Gestionnaire de catalogues de Facebook récupère votre flux selon un calendrier défini. Lorsque le flux est protégé, vous devez intégrer les identifiants dans l'URL de flux que vous fournissez à Facebook.

Le format d'une URL avec identifiants HTTP de base intégrés est :

https://username:password@votreboutique.com/modules/facebookproductsfeed/feeds/feed_1_en.xml

Étapes :

  1. Copiez l'URL de votre flux depuis le tableau de bord du module (l'URL affichée à côté de chaque drapeau de langue).
  2. Insérez vos identifiants avant le nom de domaine : https://https://UTILISATEUR:MOT_DE_PASSE@
  3. Collez l'URL complète dans le champ URL du contenu lors de la configuration d'un flux planifié dans le Gestionnaire de catalogues de Facebook.
  4. Facebook utilisera cette URL à chaque actualisation planifiée et transmettra les identifiants automatiquement.

Conseil : Certains caractères spéciaux dans les mots de passe (comme @, /, ?, #) doivent être encodés en URL lorsqu'ils sont intégrés dans une URL. Par exemple, @ devient %40. Si votre mot de passe contient ces caractères, choisissez un mot de passe plus simple pour éviter les problèmes d'encodage.

Instagram Shopping utilise le même backend que le Gestionnaire de catalogues. Le même format d'URL avec identifiants intégrés s'applique également là.

Prérequis serveur

PrérequisDétails
Serveur webApache 2.4+ ou LiteSpeed. Le mécanisme .htaccess n'est pas pris en charge sur Nginx.
AllowOverrideL'hôte virtuel Apache doit autoriser les remplacements .htaccess pour le répertoire du module (AllowOverride AuthConfig ou AllowOverride All). Si les remplacements sont désactivés, le fichier .htaccess sera ignoré et l'accès restera ouvert.
Permissions d'écriture sur les fichiersPHP doit pouvoir écrire dans le dossier feeds/ à l'intérieur du répertoire du module. Le module affiche une erreur lors de l'enregistrement s'il ne peut pas créer ou écrire dans .htpasswd ou .htaccess.
mod_authn_fileLe module Apache mod_authn_file doit être activé. Il fournit la directive AuthUserFile utilisée dans le .htaccess généré. La plupart des environnements d'hébergement mutualisé l'ont activé par défaut.

Si vous utilisez Nginx, envisagez de restreindre l'accès au niveau de la configuration serveur (par exemple en utilisant auth_basic dans le bloc de site Nginx). Contactez votre hébergeur ou votre administrateur système si vous avez besoin d'aide à ce sujet.

Remarques importantes

  • Seuls les fichiers .xml sont protégés. Le .htaccess écrit par le module utilise un bloc <FilesMatch "\.xml$">, de sorte que les autres fichiers du dossier des flux (comme progress.json) restent accessibles sans identifiants.
  • Un seul jeu d'identifiants par boutique. Les paramètres de protection (FPF_SECURITY, FPF_SECURITY_USER, FPF_SECURITY_PASS) s'appliquent au contexte de la boutique courante. Dans une configuration multiboutique, configurez la protection séparément pour chaque boutique si nécessaire.
  • Modifier les identifiants réécrit les fichiers. Si vous mettez à jour le nom d'utilisateur ou le mot de passe et enregistrez à nouveau, le module écrase immédiatement .htpasswd et .htaccess avec les nouvelles valeurs.
  • Auth de base pour la génération (fonctionnalité distincte). L'onglet Feed Protection contient également les champs Nom d'utilisateur Auth de base et Mot de passe Auth de base. Ces champs sont sans rapport avec la protection du flux — ils sont utilisés lorsque le générateur de flux interne du module effectue des requêtes HTTP vers lui-même (pour la génération en cycles récursifs) et que votre serveur exige une authentification pour accéder au site. Ne les confondez pas avec les identifiants du dossier des flux.

Résolution des problèmes

ProblèmeSolution
Erreur "Les identifiants de sécurité ne sont pas valides ou vides" lors de l'enregistrementLes champs Utilisateur et Mot de passe doivent tous deux être renseignés avant d'activer la protection. Remplissez les deux champs et enregistrez à nouveau.
Erreur "Impossible de créer ou d'écrire dans le fichier .htpasswd"PHP n'a pas la permission d'écriture sur le dossier feeds/. Vérifiez la propriété et les permissions du dossier sur votre serveur. Le dossier doit être accessible en écriture par l'utilisateur du serveur web.
L'URL du flux reste accessible sans identifiants après activationVotre serveur utilise probablement Nginx, ou Apache a AllowOverride None pour le répertoire du module. Le fichier .htaccess est présent sur le disque mais n'est pas lu. Demandez à votre hébergeur d'activer les remplacements .htaccess, ou utilisez plutôt une restriction d'authentification au niveau serveur.
Facebook renvoie une erreur "Impossible de récupérer le flux" après activationLes identifiants intégrés dans l'URL fournie à Facebook sont incorrects, ou le format de l'URL est erroné. Vérifiez le format https://utilisateur:motdepasse@domaine/... et confirmez que les identifiants correspondent à ceux définis dans le module.
La protection a été désactivée mais le flux renvoie encore 401Le module n'a pas réussi à supprimer .htaccess ou .htpasswd (problème de permissions sur les fichiers). Supprimez manuellement ces deux fichiers du dossier feeds/ via FTP ou le gestionnaire de fichiers de votre hébergement.

Foire aux questions

Dois-je mettre à jour l'URL dans le Gestionnaire de catalogues Facebook chaque fois que je change mon mot de passe ?

Oui. Les identifiants sont intégrés dans l'URL de flux que vous avez enregistrée auprès de Facebook. Lorsque vous modifiez le nom d'utilisateur ou le mot de passe dans le module, vous devez également mettre à jour l'URL dans le Gestionnaire de catalogues avec les nouveaux identifiants — sinon la récupération planifiée de Facebook renverra 401 et le catalogue cessera de se mettre à jour.

Puis-je utiliser n'importe quel nom d'utilisateur et mot de passe, ou y a-t-il des restrictions ?

Vous pouvez utiliser n'importe quelle chaîne non vide. Pour plus de simplicité, évitez les caractères spéciaux comme @, :, /, ? et # dans votre mot de passe, car ils doivent être encodés en URL lorsqu'ils sont intégrés dans une URL de flux. Un mot de passe composé uniquement de lettres, chiffres et tirets est le plus facile à utiliser.

Le mot de passe est-il stocké de manière sécurisée ?

Oui. Le module hache le mot de passe avec bcrypt avant de l'écrire dans .htpasswd. Le mot de passe en clair n'est jamais stocké dans la base de données ni sur le disque.

La protection s'applique-t-elle à toutes les langues et tous les pays du flux, ou seulement à un seul ?

La protection s'applique à l'ensemble du dossier feeds/. Tous les fichiers .xml de ce dossier — quelle que soit la langue ou le pays — requièrent des identifiants une fois la protection activée.

Que se passe-t-il si je supprime manuellement le fichier .htpasswd ?

Le fichier .htaccess fait toujours référence au fichier .htpasswd (désormais manquant). Apache renverra une erreur 500 Internal Server Error pour toute URL de flux. Pour récupérer, réactivez et ré-enregistrez la protection du flux dans le module (ce qui réécrit les deux fichiers), ou désactivez la protection dans le module et enregistrez (ce qui supprime le .htaccess orphelin).

Fonctionnalités associées