Il y a eu un problème avec le correctif de sécurité qui a été ajouté.
[ PROBLÈME RÉGLÉ LE 30/03/2022 avec les versions 4.1.2 et 3.10.8.
Plus d'infos : https://www.joomla.fr/actualites/joomla-4-1-2-et-joomla-3-10-8-sont-disponibles-correction-de-bogues ]
Selon Nicholas, l'auteur d'Akeeba backup et contributeur fortement impliqué dans la communauté, il faut éviter d'installer les mises à jour de Joomla 4.1.1 et 3.10.7
Voici ce qu'il explique en français :
Les mises à jour de Joomla 4.1.1 et 3.10.7 introduisent une fonctionnalité mal implémentée appelée "Méthode d'authentification préférée" qui bloque l'accès des utilisateurs à leurs sites. Nous avons déjà signalé ce problème pour Joomla 4 et Joomla 3. Nous attendons de Joomla qu'il règle ce problème rapidement. Ils feraient mieux. Il s'agit d'un problème majeur.
Oui, nous sommes conscients que ces versions sont marquées comme des versions de "sécurité". Cependant, le bogue majeur qu'elles introduisent est bien plus grave que les problèmes de sécurité de faible priorité qu'elles traitent.
Si vous voulez vraiment installer cette mise à jour de sécurité, faites ce qui suit :
- Mettez votre site hors ligne
- Mettez votre site à jour
- Suivez les instructions ci-dessous sous "Corriger ce qui est cassé" pour votre version du CMS.
Réparer ce qui est cassé
Si vous avez déjà mis à jour votre site vers Joomla 3, vous constaterez que vous ne pouvez plus vous connecter au site à l'aide d'un mot de passe si votre première connexion après la mise à jour a eu lieu sans utiliser de mot de passe, par exemple :
- Vous étiez connecté par le plugin Remember Me (alias authentification par cookie).
- Vous avez utilisé SocialLogin ou toute autre méthode d'authentification tierce sans mot de passe.
- Vous avez utilisé WebAuthn dans Joomla 4.
- Vous avez été connecté par un logiciel tiers, par exemple dans le cadre du processus d'achat avec un composant de commerce électronique.
- Vous vous êtes connecté avec un plugin d'authentification unique.
- Vous vous êtes connecté avec un forum bridge ou tout autre plugin d'authentification fournissant un pont vers une autre application installée sur votre site ou à distance.
- Vous vous êtes connecté à l'aide d'un plugin d'authentification Joomla autre que le plugin par défaut "Authentification - Joomla", tel que LDAP, Gmail, etc.
- Cela s'applique également à tous les utilisateurs de votre site. Donc, oui, c'est sérieux. Si des personnes se sont connectées sur votre site et que leur session a expiré, elles seront à nouveau connectées par le plugin Remember Me. Une fois qu'ils se seront déconnectés, ils seront bloqués pour toujours sur votre site. Cela peut être préjudiciable pour tout site.
Vous pouvez résoudre ce problème en supprimant chirurgicalement deux petits morceaux de code qui causent les problèmes de connexion. Heureusement, nous sommes très familiers avec Joomla, nous comprenons comment il fonctionne, nous avons repéré ce problème en premier et nous avons trouvé une solution assez simple.
Malheureusement, elle nécessite l'édition de fichiers, ce qui est très pénible si vous avez des dizaines ou des centaines de sites à mettre à jour. C'est pourquoi nous avons signalé ce problème au projet Joomla avant de publier une solution de contournement. Oui, il y a un moyen de contourner ce problème avec un plugin assez alambiqué, mais nous préférons le voir corrigé dans Joomla lui-même plutôt que de créer un autre plugin pour contourner un autre bug de Joomla...
Sans plus attendre, voyons comment résoudre ce problème.
Correction de Joomla 4
Modifier le fichier plugins/user/joomla/joomla.php
Trouvez les lignes suivantes (lignes 408-419) :
Code PHP:
if ($id)
{
$instance->load($id);
// Add auth provider constraint if not set yet
if (!$instance->authProvider)
{
$instance->setAuthProvider($user['type']);
}
return $instance;
}
Remplacez-les par
Code PHP:
if ($id)
{
$instance->load($id);
return $instance;
}
Modifiez le fichier libraries/src/Authentication/Authentication.php
Trouvez les lignes suivantes (lignes 187-194) :
Code PHP:
// Check auth provider constraint
if ($pluginConstraint
&& $plugin instanceof ProviderAwareAuthenticationPluginInterface
&& $plugin::isPrimaryProvider()
&& $plugin::getProviderName() !== $pluginConstraint)
{
continue;
}
Remplacez-les par
Code PHP:
// Check auth provider constraint
if ($pluginConstraint
&& $plugin instanceof ProviderAwareAuthenticationPluginInterface
&& $plugin::isPrimaryProvider()
&& $plugin::getProviderName() !== $pluginConstraint)
{
//continue;
}
Joomla 3
Editez le fichier plugins/user/joomla/joomla.php
Trouvez les lignes suivantes (lignes 388-399) :
Code PHP:
if ($id)
{
$instance->load($id);
// Add auth provider constraint if not set yet
if (!$instance->authProvider)
{
$instance->setAuthProvider($user['type']);
}
return $instance;
}
Code PHP:
if ($id)
{
$instance->load($id) ;
return $instance ;
}
Modifiez le fichier libraries/src/Authentication/Authentication.php.
Trouvez les lignes suivantes (lignes 304-310) :
Code PHP:
// Check auth provider constraint
if ($pluginConstraint
&& $plugin instanceof ProviderAwareAuthenticationPluginInterface
&& $plugin::isPrimaryProvider()
&& $plugin::getProviderName() !== $pluginConstraint)
{
continue;
}
Remplacez-les par
Code PHP:
// Check auth provider constraint
if ($pluginConstraint
&& $plugin instanceof ProviderAwareAuthenticationPluginInterface
&& $plugin::isPrimaryProvider()
&& $plugin::getProviderName() !== $pluginConstraint)
{
//continue;
}
Source : https://www.akeeba.com/news/1750-do-...7-updates.html
Commentaire