JEXEC

From Joomla! Documentation

This page is a translated version of the page JEXEC and the translation is 100% complete.

Other languages:
English • ‎español • ‎français • ‎Nederlands • ‎中文(台灣)‎
Copyedit.png
This Article Needs Your Help

This article is tagged because it NEEDS REVIEW. You can help the Joomla! Documentation Wiki by contributing to it.
More pages that need help similar to this one are here. NOTE-If you feel the need is satistified, please remove this notice.


Cette page documente la vérification _JEXEC utilisée afin de protéger de nombreux fichiers PHP en expliquant pourquoi elle est utilisée, quand l'utiliser et les situations où elle ne devrait pas être utilisée. Vous pouvez également consulter : Pourquoi la plupart des fichiers PHP de Joomla! commence par defined('_JEXEC') ? Pourquoi la plupart des fichiers PHP de Joomla! commence par defined('_JEXEC') ?

Quoi ?

La ligne suivante est communément présente au début de tous les fichiers PHP présents dans Joomla! :

defined('_JEXEC') or die('Restricted access');

Pourquoi ?

_JEXEC est une constante qui est généralement définie dans le fichier index.php à la racine de l'instance Joomla! et qui est utilisée pour devenir un point d'entrée sécurisé dans Joomla. La vérification "definied or die" permet de s'assurer que _JEXEC a été défini comme chemin pour l'obtention d'un fichier. Ceci est utilisé pour s'assurer qu'un fichier qui pourrait contenir des informations sur le chemin d'accès en raison des fonctions, des variables ou des classes ne sont pas définis dans un fichier PHP qui exposerait un rapport d'erreur avec son chemin.
Cela empêche également l'injection accidentelle de variables par le biais d'une attaque globale faisant croire au fichier PHP qu'il est traité à l'intérieur de l'application, alors qu'il ne le serait pas.

Régler les rapports d'erreurs sur un niveau moins élevé pourrait avoir des effets similaires mais il existe des des cas où les changements de la configuration des paramètres PHP .INI ne sont pas autorisés. La vérification JEXEC fonctionne indépendamment si la modification de la configuration est possible ou non (par exemple si vous êtes en mode débogage diminuer le niveau de déclaration des erreurs serait gênant pour pouvoir définir l'indicateur de débogage).

Quand ?

La vérification devrait être ajoutée à des fichiers auxquels il est possible d’accéder directement à la racine du site. Par exemple, l'erreur suivante se produit lorsque la vérification _JEXEC est désactivée pour le Plugin Système Backlink (fichier /plugins/system/backlink.php) :

Fatal error: Call to undefined function jimport() in /Users/pasamio/Sites/workspace/joomla_15/plugins/system/backlink.php on line 18

Comme cela est précisé la fonction 'jimport' n'existe pas lorsque le fichier est directement appelé ainsi, le PHP génère une erreur et présente le chemin d'accès au fichier. L'ajout de la vérification 'defined or die' va provoquer un message d'"accès restreint" à afficher lorsque le fichier est demandé.

Ainsi, la règle générale pour la vérification JEXEC est de vérifier si le fichier PHP dépend d'un autre fichier pour fonctionner correctement. En règle générale, si vous accédez à un fichier directement, sans vérification JEXEC, une erreur PHP est déclenchée (à condition que votre rapport d'erreurs PHP soit configuré pour afficher les erreurs par défaut) pour l'absence de variable, de fonction, d'un objet ou d'un élément similaire et de fait, le fichier doit être protégé.

Certains fichiers n'ont pas besoin d'être protégé de cette vérification. Il s'agit des fichiers sans dépendances externes (par exemple une simple classe ou une partie de code) ou il peut s'agir des fichiers externes qui peuvent fonctionner en dehors de Joomla. Ceci est notamment le cas pour les générateurs de javaScript pour TinyMCE qui sont entièrement autonomes.