Sauter la navigation

Ce sujet est résolu. Voici une description du problème et de la solution.

Problem:
You want to scan your theme to find strings to translate, but your server blocks requests when scanning files named FileStore.php located in the /vendor/ folder of your theme. This blockage is due to ModSecurity.
Solution:
We recommend two alternatives to avoid this issue:
1. Generate a .po file offline using code or Poedit on a test site or sandbox environment, which you can then import via WPML String Translation.
2. Use the "auto register strings" feature at the bottom of the String Translation page. This feature will only register the necessary strings, eliminating the need to scan them.

If this solution does not apply to your case, or if it seems outdated, please open a new support ticket. We also highly recommend checking related known issues at https://wpml.org/known-issues/, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. For further assistance, you can visit our support forum at WPML support forum.

Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.

Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.

Marqué : 

Ce sujet contient 9 réponses, a 2 voix.

Dernière mise à jour par Ilyes Il y a 6 mois et 3 semaines.

Assisté par: Ilyes.

Auteur Articles
juillet 2, 2024 à 4:35 pm #15877095

jessicaD-2

Contexte de la question:
Je veux scanner mon thème pour y trouver des strings à traduire. Le scan procède à de multiples requêtes sur admin-ajax.php, ce qui est normal. Simplement, mon serveur bloque les requêtes au bout d'un moment, quand le scan se fait sur des fichiers avec le nom FileStore.php. Ce fichier FileStore.php se trouve dans le dossier /vendor/ de mon thème. C'est un dossier nécessaire au fonctionnement de mon thème.

Symptômes:
Mon serveur bloque les requêtes au bout d'un moment, quand le scan se fait sur des fichiers avec le nom FileStore.php. C'est un blocage de sécurité fait par ModSecurity

Questions:
Est-ce possible d'exclure le fichier FileStore.php de la recherche de string à traduire ?

juillet 2, 2024 à 10:45 pm #15878353

Ilyes
Supporter

Les langues: Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Merci d'avoir contacté l'équipe d'assistance WPML,

Je trouve qu'il est difficile de trouver une solution pour ce type de blocage, d'autant plus que nous avons peu d'informations sur la règle de Modsecurity mise en place.

Donc avant toute chose, avez-vous une idée de la règle de Modsecurity qui est appliquée dans ce blocage ? Et s'il y a des logs de leur part.

Il est également important de mentionner qu'il existe d'autres moyens de charger et d'analyser les chaînes de caractères, vous pouvez consulter d'autres méthodes ici :

https://wpml.org/fr/documentation-6/guide-de-demarrage-rapide/string-translation/trouver-des-chaines-qui-napparaissent-pas-sur-la-page-traduction-des-chaines/

Cordialement,

juillet 3, 2024 à 8:15 am #15882121

jessicaD-2

Le log d'erreur de modSec :

[Tue Jul 02 09:48:15.444561 2024] [security2:error] [pid 1224720:tid 23022299490048] [remote 37.66.57.68:46007] [client 37.66.57.68] ModSecurity: Access denied with code 403 (phase 2). Matched phrase "filestore" at ARGS:files[]. [file "https://cdn.wpml.org/etc/apache2/conf.d/modsec_vendor_configs/imunify360-full-apache/001_i360_basic.conf"] [line "25"] [id "77316844"] [msg "IM360 WAF: Block by known DB injection entry||Injection:/home/urgen762/public_html/wp-content/themes/usq/vendor/vlucas/phpdotenv/src/Store/FileStore.php||User:urgen762||SC:/home/urgen762/public_html/wp-admin/admin-ajax.php||WPU:Thomas||T:APACHE||"] [severity "CRITICAL"] [tag "service_im360"] [hostname "www.urgences-sante.qc.ca"] [uri "/wp-admin/admin-ajax.php"] [unique_id "ZoQFH8a-qc6W6lWqfmV0zgABGBg"], referer: lien caché

Le problème est que la requête Ajax porte sur un fichier s'appelant FileStore.php.

J'ai bien essayé de créer des règles modsec personnalisées via le htaccess du genre

<IfModule mod_security.c>
<If "%{REQUEST_URI} =~ m#/wp-admin/#">
SecFilterEngine Off
SecFilterScanPOST Off
</If>
</IfModule>

Mais même sans la condition <If "%{REQUEST_URI} =~ m#/wp-admin/#">, je ne semble pas avoir la main pour contrôler cela.

juillet 3, 2024 à 5:05 pm #15886159

Ilyes
Supporter

Les langues: Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Merci pour les détails,

Malheureusement, notre aide est très limitée car cela est entièrement dû à une nouvelle règle de Modsecurity, j'ai pu voir que d'autres développeurs sont suggérés d'ajouter des exceptions pour éviter ce blocage : https://stackoverflow.com/questions/78672051/getting-modsecurity-access-denied-with-code-403-because-the-content-of-a-post-c

Il est plus approprié pour votre hébergeur de fournir une solution alternative pour mettre ce fichier sur liste blanche,

Cordialement,

juillet 8, 2024 à 7:19 am #15910475

jessicaD-2

Je comprends tout à fait qu'ajouter une exception résoudrait mon problème. Cependant, comme expliqué dans mon premier message, mon offre d'hébergement ne me permet pas cela.

Donc je voudrais savoir s'il existait un moyen d'exclure des fichiers/dossiers du scan de WPML string translation ?

juillet 8, 2024 à 3:42 pm #15914460

Ilyes
Supporter

Les langues: Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Merci pour le suivi,

La seule solution à laquelle j'ai pensé est de supprimer temporairement ce fichier/dossier > d'effectuer le scan > puis de rétablir le dossier concerné

Bien sûr, je ne sais pas si c'est une solution viable car je ne sais pas comment cela pourrait affecter le site, mais si vous pensez que cela vaut la peine d'être testé, vous pouvez le faire sur un environnement staging,

Entre-temps, j'ai transmis votre demande à notre deuxième niveau afin de vérifier si nous disposons d'un autre moyen de le faire,

Je vous tiendrai au courant,

juillet 8, 2024 à 6:11 pm #15915053

Ilyes
Supporter

Les langues: Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Rebonjour,

J'ai reçu une réponse de notre équipe,

Le thème utilise donc cette bibliothèque : lien caché

La bibliothèque comprend un fichier FileStore.php, qui est signalé comme problématique par les règles de sécurité.

S'ils ne peuvent pas modifier les règles de sécurité, l'option la plus simple serait de supprimer temporairement le fichier qui pose problème (wp-content/themes/usq/vendor/vlucas/phpdotenv/src/Store/FileStore.php) pendant l'analyse du plugin.

Le fichier ne contient pas de chaînes traduisibles, il n'y aurait aucune conséquence à le supprimer temporairement, puis à le restaurer après l'analyse.

N'hésitez pas à nous faire savoir si cela est possible,

juillet 9, 2024 à 7:12 am #15918334

Ilyes
Supporter

Les langues: Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

J'ai obtenu plus d'informations de la part de notre équipe,

Au lieu de scanner tout le plugin, vous avez deux options :

- Générer hors ligne (via le code ou poedit (https://stackoverflow.com/questions/2514449/how-to-generate-a-po-file) sur un site d'essai ou dans un site sandbox) un fichier .po que vous pouvez importer par WPML String Translation.

OU

Utiliser la fonction "auto register strings" en bas de String Translation - elle n'enregistrera que les chaînes nécessaires et vous évitera d'avoir à les scanner.

juillet 15, 2024 à 12:55 pm #15954529

jessicaD-2

Merci pour votre aide.

J'ai bien entendu déjà renommé les fichiers pour le scan, l'erreur de ModSec étant assez explicite pour être contournée via cette solution. Le problème est que j'ai plusieurs fichiers FileStore.php, et cela n'est pas viable d'intervenir manuellement (et compromet potentiellement les fonctions du site le temps du scan).

L'idéal aurait été de pouvoir exclure certains dossiers, d'une part pour accélérer les scans, et d'autre part pour éviter ce genre de problème.

Merci pour votre aide
Bonne journée

juillet 15, 2024 à 9:46 pm #15956883

Ilyes
Supporter

Les langues: Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Avez-vous essayé les deux autres solutions alternatives que j'ai suggérées dans ma réponse précédente ?

Ici : https://wpml.org/fr/forums/topic/exclure-un-dossier-de-la-recherche-de-string-de-wpml-string-translation/#post-15918334

Cordialement,

juillet 16, 2024 à 6:57 am #15958409

jessicaD-2

La recherche et l'enregistrement automatique de strings fonctionne bien en effet, merci.
Bonne journée