Ce code supplémentaire PHP dans les frameworks et CMS

DEV - 10/11
Remarque : pour suivre, ce poste suppose que vous disposez d'un minimum de connaissances en programmation...

Remarque : pour suivre, cet article suppose que vous disposez d'une connaissance minimale de la programmation en PHP.

Cette entrée traite d'un fragment de code PHP qui a été consulté dans la partie supérieure de votre CMS ou framework préféré et celui-ci a probablement été lu qui doit toujours être inclus, par sécurité, dans la section de tous les fichiers PHP qui se déroulent, même sans un. explication très claire pour cette raison. Je me réfère à ce code :

?php if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly }
Entrer en mode plein écran Quitter le mode plein écran

Ce type de code est très courant dans les archives de WordPress, mais il apparaît en réalité dans tous les frameworks et CMS. Dans le cas du CMS Joomla, par exemple, le seul à changer est celui, à la place deABSPATH, aux États-UnisJEXEC. Pour nous, la logique est la même. Ce CMS a été utilisé à partir d'un autre appel Mambo, qui utilise également un code similaire, mais avec_VALID_MOScomme constante. Nous rétrocédons encore plus dans le temps, nous découvrons que le premier CMS a utilisé ce type de code fue PHP-Nuke (considéré par certains comme le premier CMS en PHP).

Le flux d'exécution de PHP-Nuke (et de la plupart des CMS et frameworks d'aujourd'hui) consiste à charger de manière séquentielle plusieurs archives qui, en même temps, donnent une réponse à l'action réalisée par l'utilisateur ou le visiteur sur le Web. Alors, imaginez un site Web de cette époque, sous le domaine example.net et avec ce CMS installé. Chaque fois que vous chargez la page d'accueil, le système exécute une sécurité des archives de manière ordonnée (dans ce cas, c'est seulement un exemple, ce n'est pas une sécurité réelle) :index.php => load_modules.php => modules.php. C'est décidé, dans cette succession, premier à chargerindex.php, j'ai lu ce script chargéload_modules.php, tu es à su vezmodules.php.

Cette chaîne d'exécution ne peut toujours pas être utilisée par le premier fichier (index.php). De cette façon, vous pouvez partager une partie de ce flux en appelant directement l'un des autres fichiers PHP par votre URL (par exemple,http://example.net/load_modules.phpohttp://example.net/modules.php), c'est vrai, comme nous le savons, cela pourrait être dangereux dans de nombreux cas.

Comment résoudre ce problème ? Si vous introduisez un moyen de sécurité, ajoutez des codes au début de chaque fichier, similaires à celui-ci :

?php if (!eregi("modules.php", $HTTP_SERVER_VARS['PHP_SELF'])) { die ("You can't access this file directly..."); }
Entrer en mode plein écran Quitter le mode plein éc...
[Courte citation de 8% de l'article original]
Loading...