Access refused by CSRF protection

Bonjour à tous, et meilleurs voeux,

je rencontre depuis aujourd’hui un problème sur Dolibarr lorsque je souhaite modifier un valeur depuis l’interface. Par exemple je modifie le prix d’un de mes services et lorsque je valide cette modification j’obtiens l’erreur suivante :
Access refused by CSRF protection in main.inc.php. Referer of form () is outside the server that serve this page (with method = POST). If you access your server behind a proxy using url rewriting, you might check that all HTTP headers are propagated (or add the line $dolibarr_nocsrfcheck=1 into your conf.php file to remove this security check).

Avez-vous déjà rencontré cela ? Je n’utilise pas de proxy pourtant. J’ai bien la ligne $dolibarr_nocsrfcheck=1 dans config.php et j’ai activé aussi la ligne suivante dans Divers de Dolibarr : MAIN_SECURITY_CSRF_WITH_TOKEN=1

Je ne comprends pas comment cela est venu surtout qu’avant je n’avais aucun problème.

Avez vous une idée ?

merci par avance

Bonjour,

Avez-vous regardé ici ?
Parce qu’apparemment MAIN_SECURITY_CSRF_WITH_TOKEN doit être à 0

Cdt

Bonjour,
$dolibarr_nocsrfcheck dans config.php et MAIN_SECURITY_CSRF_WITH_TOKEN on la même utilité. je n’ai pas vérifié si il y en avait un qui était « plus fort » que l’autre (je penche pour MAIN_SECURITY_CSRF_WITH_TOKEN). Dans le doute pour désactivé l’option an laissant
$dolibarr_nocsrfcheck=1
et supprimer MAIN_SECURITY_CSRF_WITH_TOKEN dans configuration divers.
Attention cette manipulation créer un faille de sécurité (très facilement exploitable, si on cherche à vous nuire sur un Dolibarr hébergé accessible depuis internet ou sur un réseaux local)

En gros, en simplifiant, dans Dolibarr qaund vous cliquer sur « modifier », ou « creer », le crayon pour changer un champ unitaire, ou une recherche sur une liste filtrée.
Dolibarr vous présente un formulaire (les filtres des listes sont aussi un formulaire dans notre exemple). Dans ce formulaire, il y un truc caché qui dit je suis le formulaire de creation/modification/filtre « 1234546 ». Dolibarr sait que le seul ce formulaire « 1234546 » peut valider une modification/filtrage.

Que se passe t’il si vous avez plusieurs onglet Dolibarr en ouvert en même temps (cela arrive…) ?
Temps 1 :Onglet 1 => Clique sur « modifier/creer/filtre » => page avec le formulaire « 123465 »
Temps 2 :Onglet 2 => Clique sur « modifier/creer/filtre » sur un autre truc => page avec le formulaire « 789654321 »
Temps 3 :Onglet 1 => Clique sur « Sauver/filtre » => Erreur CSRF, Dolibarr ne comprend pas, il attend une information du dernier formulaire demandé (« 789654321 ») et il reçois une demande du formulaire « 123465 »

Ce paramétre est à 1 par défaut sur les nouvelles installations standard de Dolibarr (depuis la version 12), ce qui pose des problèmes d’utilisation sur plusieurs onglets. Cependant, cela qui assure que lorsque Dolibarr reçois une demande, elle provient bien de celui qui l’a demandé à l’instant et pas d’un « hacker », ou d’un logiciel malicieux (en tous cas c’est plus compliqué à « hacker »).

Merci @FHenry et @gaecCAB.

J’ai remis MAIN_SECURITY_CSRF_WITH_TOKEN à 1 et aussi $dolibarr_nocsrfcheck = ‹ 1 ›.

J’ai toujours l’erreur. En supprimant la fonction dans filefunc cela refonctionne mais la sécurité n’est plus là.

Ce que je ne comprends pas c’est que du jour au lendemain ça ne fonctionne plus pourquoi ? Car je suis coincé dans mes traitements de facturation…

Je vais tenter de mettre à jour dolibarr vers la 12.0.4.

Je me suis mal exprimé : MAIN_SECURITY_CSRF_WITH_TOKEN et $dolibarr_nocsrfcheck on le même role mais n’ont pas le même sens.
$dolibarr_nocsrfcheck => si 1 pas de sécurité
MAIN_SECURITY_CSRF_WITH_TOKEN => si 1 sécurité
Pour désactivé la sécurité : $dolibarr_nocsrfcheck⁼1 et pas de divers MAIN_SECURITY_CSRF_WITH_TOKEN (ou alors à 0) comme ça il n’y pas de confusion possible.
Pour la sécurité : $dolibarr_nocsrfcheck⁼0 et divers MAIN_SECURITY_CSRF_WITH_TOKEN=1, ou pas de divers il n’y pas de confusion possible.

Merci. j’ai bien reconfiguré comme décrit :
$dolibarr_nocsrfcheck = 1
MAIN_SECURITY_CSRF_WITH_TOKEN = 0

mais j’ai toujours la même erreur… je vais mettre en commentaire la fonction qui gère cet accès pour le moment :confused:

Il forcement eu un changement sur votre hébergement, gestion du nom de domaine, certificat SSL, etc… Ce type d’anomalies n’arrivent pas toutes seules. Surtout si vous demandez explicitement à ne pas l’avoir

$dolibarr_nocsrfcheck = 1
MAIN_SECURITY_CSRF_WITH_TOKEN = 0

et que le message d’erreur arrive toujours.
Commenté le code fonctionne => ok.

Il y a quand même un problème quelque part.

Bonjour :slightly_smiling_face:
J’ai le même souci depuis passage de v10 à v12
Voici un autre topic du même problème :