Problème après maj de v12 à v13

Bonjour,

Pour information

Nous sommes passés en V13.0.1, le problème est toujours présent.

La solution temporaire proposée par mdallosto fonctionne.

Vous pouvez modifier le fichier /htdocs/admin/modules.php en attendant une correction. Commentez les ligne 31 à 33:

31 //if (!defined(‹ CSRFCHECK_WITH_TOKEN ›)) {
32 // define(‹ CSRFCHECK_WITH_TOKEN ›, ‹ 1 ›); // Force use of CSRF protection with tokens even for GET
33 //}

Ce qui est étonnant c’est que nous avons pu tout faire normalement pendant 1 journée, et le message " Le jeton de sécurité a expiré, aussi l’action a été annulée. Merci de ré-essayer." n’est apparu que la 2e journée.

Il concerne tous les modules que l’on souhaite activer/désactiver, et se déconnecter/reconnecter ou un CTRL + F5 ne changent rien.

1 « J'aime »

Bonjour à tous,

Même avec la modification dans /htdoc/admin/modules.php comme décrit ci-dessus sur une installation fraiche de la version 13.00 … le message persiste!
Des nouvelles pour la résolution ? ou il faut repasser en 12.04

Bon fin de week-end.

Paul

C’est un bug: Voir https://github.com/Dolibarr/dolibarr/issues/16096
Pour l’instant l’unique solution est: https://github.com/Dolibarr/dolibarr/issues/16096#issuecomment-770215709

2 « J'aime »

Bonjour

Aucun module externe, même désactivé ?

Fred

Bonjour,
Bonne question.
Effectivement …j’ai zappe de tester avec les modules désactivées.
J’attends une réponse pour la compatibilité d’un module avec la v13.0.1 sinon je retourne en 12.04.

Paul

Idem pour moi
La solution temporaire proposée par mdallosto fonctionne.
Puis j’ai installé un autre module et le problème revient.
Je repasse en 12.04 ; En attendant Bonne continuation

Bonjour

Vous pouvez aussi faire cette modif https://github.com/Dolibarr/dolibarr/commit/0e96093def5f337bc559f0451a1fd599bc733ee4 pour voir dans dolibarr.log qui réclame un nouveau token.
Dans l’admin modules, même désactivé un module peux en réclamer…

Fred

Bonjour
Je viens d’essayer 13.02
Au bout de 2 modules supplémentaires le jeton à expiré puis j’ai suivi et corrigé le mainc.php avec vos indication hélas jeton expiré. Je tente un redémarrage serveur après avoir effacer le module du disque dur, hélas impossible d’activé plus aucun module en configuration…Je persiste avec la solution de mdallosto.C’est reparti mais pour combien de temps? Je reviens pour plus d’info.
Jaime

Bonjour Jaume,

as tu appliqué la modif demandée par @frederic34 pour identifier l’origine du problème ?
si oui : as tu les logs ?
si non … comment veux tu que quelqu’un creuse pour comprendre d’où ça vient et/ou corriger le problème ?

Salut Arre
Désolé mais pas assez expert pour réagir au quart de tour. Du coup grâce à ta réaction…vindicative certes mais juste, j’ai creusé et j’ai appris qu’il faut activer le module log. Bon une chose de faite. Ça évite de chercher le fichier dans « documents » voir "dolibardata " si installé par webuzo. Je dis tout ça pour éviter à d’autre mécréant comme moi de chercher.
Et voilà le fichier tout beau mais peut être en retard vu que j’ ai activé le module après le problèmedolibarr.log (46,3 Ko) .
Merci encore pour ton intérêt Jaume

désolé pour le coté vindicatif, tu as pris pour les autres qui eux, ne font jamais rien pour aider :wink: (bouhhh les autres !)

Il faut que tu fasses un dernier effort stp :

  1. préparer un onglet où tu vas rencontrer le problème
  2. supprimer ton fichier log
  3. sur l’onglet tout prêt : tout faire pour avoir le problème et t’arrêter dès que tu l’as.
  4. poster ton log

(paracerque là tu as tout ce qu’il faut pour trouver le coupable, sauf qu’on ne sait pas où regarder, ni si tu as eu le problème durant le log)

Après, le mieux est de virer la modif de fred (qui ne sert à rien mis à part surcharger le log)
et arrêter le module log (qui vas générer un gros fichier qui ne servira à rien)

C’est OK
Je n’avais plus le problème parce-que dans les logs je me suis aperçu que le module « externalsite » revenait souvent, je l’ai désactivé et c’est ok.
Puis à ta demande je l’ai réactivé et le problème est revenu « NEW TOKEN reclaimed by : /externalsitepro/css/icons.css.php »
Le fichier est à regarder après la ligne suiante et à partir de là le problème est revenu…
« « 2021-03-24 19:35:32 INFO 86.201.67.139 Scan directory /home/jaime/public_html/gestion.homeoformation.fr/custom/zipautofillfr/core/modules/ for module descriptor files (modXXX.class.php) » »"
1.Je vais vider le fichier dolibarr.log
2.redésactiver le module externalsite
3.remettre le fichier modules.php en origine
4.supprimer la modif de fred
Retester les modules et te tenir au courant
Bonne soirée ou bonjour pour demain

1 « J'aime »

J’ai oublié le fichier log à joindredolibarr (3).log (102,7 Ko)

Bien pratique le

Vous pouvez modifier le fichier /htdocs/admin/modules.php en attendant une correction. Commentez les ligne 31 à 33:

31 //if (!defined(‹ CSRFCHECK_WITH_TOKEN ›)) {
32 // define(‹ CSRFCHECK_WITH_TOKEN ›, ‹ 1 ›); // Force use of CSRF protection with tokens even for GET
33 //}

car j’avais oublié de désactiver le module fautif avant de remettre le fichier à l’original et il ne voulait plus se désactiver à cause du jeton redemandé et bloqué la conf de tout les modules
Jaume :grinning:

super, merci Jaume.
ça t’as permis de résoudre ton problème, mais au delà de ça, de permettre aux devs d’éventuellement corriger.

Salut Arre
Hier soir j’ai envoyé un mail au concepteur de « site externe pro » pour le prévenir du problème jeton.
Celui ci très réactif m’ as répondu ce matin que le module 2.6 corrigé le bug et qu’il était disponible sur Dolistore. J’ai retélécharger le module, effacer l’ancien, remis en activité et tout fonctionne plus de bug.
Donc problème réglé
Merci à toi pour ton tutorage

3 « J'aime »

bonjour,
j’avais aussi ce soucis, je me suis donc mis à désactiver les modules 1 par 1 en décommentant/recommentant les lignes 31 à 33 du fichier /htdocs/admin/modules.php comme le propose mdallosto.
chez moi le coupable était le module SUIVI DES ECHANGES ET CONTACTS d’inovea conseil…
en espérant que ça puisse solutionner la situation de certains.

Effectivement, cette solution work

Pour information, la version 13.0.4 a été publiée.
Ce problème est bien du à des modules externes qui ne sont pas compatible au standard de sécurité de la v13 et font tourner incorrectement le jeton de sécurité (par exemple des modules avec des fichiers .css.php ou .js.php ou encore des fichiers ajax qui n’ont pas inclut la directive
define('NOTOKENRENEWAL', '1'); // Disables token renewal
au début du fichier et qui provoquent le renouvellement de jeton de sécurité alors qu’ils ne devraient pas).
La version 13.0.4 amène une « compensation » pour être moins sensible à ces modules et ne plus avoir l’erreur même pour ces cas.

PS: Si vous voyez dans les log un message
NEW TOKEN reclaimed by : /modulextern/....css.php ou /modulextern/....js.php ou ...
Il y a un bug de sécurité dans le module externe. Signalez le à l’auteur du module pour correction.

2 « J'aime »

Je reproduis ici une réponse que j’avais faite dans ce sujet.

Voici (en substance) le script que j’utilise pour détecter quels modules sont susceptibles de poser un problème de compatibilité. Ce script fonctionne sous linux, il doit également pouvoir fonctionner sous Windows pourvu que vous ayez un shell bash (par exemple git bash) :

cd /var/www/html/chemin/de/votre/dolibarr
# note : 'interface.php' est un nom donné au back-end des requêtes ajax
#        de nombreux modules de Dolibarr
 for file_name in $(find ./ -name *.css.php -o -name *.js.php -o -name interface.php);do
        # si le fichier ne contient pas 'NOTOKENRENEWAL', affiche son nom
        #  -L permet d'inverser la recherche: je veux les fichiers qui ne
        #     correspondent PAS au motif fourni
        #  -H permet d’afficher le nom du fichier plutôt que des lignes
        grep -LH 'NOTOKENRENEWAL' "$file_name"
        # si le fichier contient 'NOTOKENRENEWAL' sur une ligne commentée
        # avec //, affiche son nom aussi
        # -P permet d’utiliser les expressions régulières perl
        grep -PH "^[\t ]*//.*define.*NOTOKENRENEWAL" "$file_name"
 done
1 « J'aime »