[RESOLU] Code suffisamment sécurisé sur les include() ?

Eléphanteau du PHP | 22 Messages

22 juil. 2012, 17:35

Bonjour à tous,

Comme écrit dans le titre du sujet, je viens vers vous pour savoir si mon code pour appeler mes pages est suffisamment sécurisé sur l'utilisation de la fonction include().
Voici mon code :
include('lib/header.php'); 

if (!isset($_GET['page']))
{
	$_GET['page'] = 'index';
}

if (!file_exists('pages/' .$_GET['page']. '.php'))
{
	$_GET['page'] = '404';
}

include('pages/' .$_GET['page']. '.php');

include('lib/footer.php');
J'aimerais aussi savoir dans ce genre de cas, si il est préférable d'utiliser comme actuellement include() ou alors include_once() ?

En attente de vos réponses.
Cordialement

ViPHP
xTG
ViPHP | 7331 Messages

22 juil. 2012, 18:17

include() ou inlude_once() n'est pas un débat en soit pour ce que tu veux faire.

Par contre là tu offres la possibilité d'inclure tout et n'importe quoi se trouvant sur le disque dur de ton hébergement.
Il serait plus sécurisé de gérer un array contenant la liste des fichiers autorisés.

Eléphanteau du PHP | 22 Messages

22 juil. 2012, 18:23

Merci pour ta réponse.

Étant débutant, aurais-tu un début de code pour l'exemple s'il te plait ?


EDIT : J'ai trouvé quelque chose, avant de me donner un exemple je vais voir si ça fonctionne. Je vous tiens au courant ! :)

Eléphanteau du PHP | 22 Messages

22 juil. 2012, 20:38

Voilà, j'ai trouvé ça :
include('lib/header.php'); 

$array_pages = array(
		'accueil'		=>		'index.php'
		);

if (!empty($_GET['page']))
{
	if (array_key_exists(strtolower($_GET['page']), $array_pages))
	{
		include('pages/' .$array_pages [strtolower($_GET['page'])]);
	}
	else
	{
		include('pages/404.php');
	}
}
else
{
	include('pages/' .$array_pages['accueil']);
}

include('lib/footer.php');
Par contre je suis pas très sur pour cette ligne, je savais pas qu'on pouvait faire comme ça :
include('pages/' .$array_pages [strtolower($_GET['page'])]);

ViPHP
xTG
ViPHP | 7331 Messages

22 juil. 2012, 20:47

Rien à redire sur le fonctionnement. :)

Eléphanteau du PHP | 22 Messages

22 juil. 2012, 22:35

Merci beaucoup pour ton aide.
Sujet résolu !