Ich habe mir das neue 13.0 installiert. Klappt alles einwandfrei, aber
wenn ich irgendwas im Setup ändern will, zb Modul aktivieren, bekomme ich die Meldung
„Security token has expired, so action has been canceled. Please try again.“
Weiß jemand was damit gemeint ist? Welches „security token“?
Läuft das auf einem Linux Server?
Ja,
Server Version Linux h01 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 x86_64
PHP Version 7.3.26-1+0~20210112
MySQL Version 5.5.5-10.3.27-MariaDB-0+deb10u1
die sache hat sich zwischen zu einem offiziellen bug entwickelt und wird hoffentlch mit der nächsten version korrigiert sein. Inzwischen gibt es ein paar work-arounds.
Siehe: https://github.com/Dolibarr/dolibarr/pull/16124
Ich fand Berichte das ein Upgrade auf Version 13.0.1 oder 13.0.2 dieses Problem behebt, aber das war in meinem Fall nicht so.
wenn man keine Eigenentwicklungen bzw. Thirdpartyentwicklungen im Einsatz hat, tritt dieser Fehler wie ebenfalls berichtet wurde nicht auf. Ich habe jedoch einige Eigen und Thirdpartyentwicklungen im Einsatz und demensprechend Mühsam war es die Orte und Gründe herauszufinden.
Mein Workarround war der folgende:
Mehrere Dateien definieren die Konstante ‚CSRFCHECK_WITH_TOKEN‘ als ‚1‘.
Somit habe ich Überall, wo ‚CSRFCHECK_WITH_TOKEN‘ definiert ist, die Einstellung auf ‚0‘ geändert.
/htdocs/admin/modules.php
/htdocs/core/ajax/constantonoff.php
/htdocs/main.inc.php
/htdocs/user/perms.php
/htdocs/admin/modules.php
if (!defined(‘CSRFCHECK_WITH_TOKEN’)) {
- define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET
auf
+ define('CSRFCHECK_WITH_TOKEN', '0'); // Force use of CSRF protection with tokens even for GET
/htdocs/core/ajax/constantonoff.php
f (!defined(‘NOREQUIRETRAN’)) define(‘NOREQUIRETRAN’, ‘1’);
- if (!defined(‘CSRFCHECK_WITH_TOKEN’)) define(‘CSRFCHECK_WITH_TOKEN’, ‘1’); // Token is required even in GET mode
auf
- if (!defined(‘CSRFCHECK_WITH_TOKEN’)) define(‘CSRFCHECK_WITH_TOKEN’, ‘0’); // Token is required even in GET mode
/htdocs/main.inc.php
//$dolibarr_nocsrfcheck=1;
// Check token
if ((!defined(‘NOCSRFCHECK’) && empty($dolibarr_nocsrfcheck) && !empty($conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN))
-
|| defined('CSRFCHECK_WITH_TOKEN')) // Check validity of token, only if option MAIN_SECURITY_CSRF_WITH_TOKEN enabled or if constant CSRFCHECK_WITH_TOKEN is set into page
auf
//$dolibarr_nocsrfcheck=1;
// Check token
if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && !empty($conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN))
|| defined('CSRFCHECK_WITH_TOKEN') // Check validity of token, only if option MAIN_SECURITY_CSRF_WITH_TOKEN enabled or if constant CSRFCHECK_WITH_TOKEN is set into pa$
&& ! empty(CSRFCHECK_WITH_TOKEN) ) // new security token check
{
* ```
|| ( defined('CSRFCHECK_WITH_TOKEN') && ! empty(CSRFCHECK_WITH_TOKEN) ) ) // Check validity of token, only if option MAIN_SECURITY_CSRF_WITH_TOKEN enabled or if constant CSRFCHECK_WITH_TOKEN is set into page
{
/htdocs/user/perms.php
- if (!defined(‘CSRFCHECK_WITH_TOKEN’)) define(‘CSRFCHECK_WITH_TOKEN’, ‘1’); // Force use of CSRF protection with tokens even for GET
auf
- if (!defined(‘CSRFCHECK_WITH_TOKEN’)) define(‘CSRFCHECK_WITH_TOKEN’, ‘0’); // Force use of CSRF protection with tokens even for GET