OVH Cloud OVH Cloud

Pseudoframe securite

1 réponse
Avatar
Droopy191
Bonjour,

Je débute et php et j'essaye d'organiser mon site en pseudo-frames:
un index.php à la racine du site
et les corps de pages dans un sous-répertoire /pages/qqchose.htm

Les pages sont donc appelées par toto.com/index.php?page=page1

et traitées comme ci-dessous

if(empty($_GET['page']) )
{ $tpage ='main' ; }
else {$tpage =$_GET['page'];};

switch($tpage)
{
case'main':
include('pages/main.inc');
break;

case'outils':
include('pages/outils.inc');
break;

default:
include('pages/main.inc');
}

J'ai lu pas mal d'avertissements sur le passage de paramètres en url.
Je voudrais vos avis/conseils sur cette manière de faire.

Merci d'avance

--
DR

1 réponse

Avatar
Steuf
Bonjour,


Bonjour


J'ai lu pas mal d'avertissements sur le passage de paramètres en url.
Je voudrais vos avis/conseils sur cette manière de faire.


Oui il est parfois dangereux d'utiliser un système de d'inclusion
conditionnel.

J'ai connu deux méthode, l'une via un Tableau, l'autre via un switch,
maintenant j'utilise celle avec le switch qui parait la plus "correct".

Ensuite, il faut penser à vérifer que la variable $_GET['page'] ( Ou
$_REQUEST['page'] au choix ) existe pas, dans le cas contraire on met
une page par défaut. Il faut éffectivement vérifier aussi que cette
variable n'est pas vide. Ensuite on utilise le switch, et finalement on
vérifie que la page à inclure existe bien sur le serveur. Ce qui donne :

// Iniatiliser les variables dans la condition pour les serveurs en
register_globals = ON.
$p_include = FALSE; $IncludePseudoFrame = FALSE;
if ( isset( $_GET['page'] ) and !empty( $_GET['page'] ) ) {
switch( $_GET['page'] ) {
case 'accueil' : $p_include = 'accueil.php' ; break;
}
if( !empty( $p_include ) and file_exists( $p_include ) ) ) {
include( $p_include );
}
else {
include( 'defaut.php' );
}
// Ajout facultatif de vérification
$IncludePseudoFrame = get_included_files();
unset( $IncludePseudoFrame[0], etc... "C'est à dire les pages incluent
avant celle du centre" );
if ( empty( $IncludePseudoFrame ) ) {
echo '<h1>Cette page n'existe pas !</h1>';
}
}
else {
include( 'defaut.php' );
}

Il me semble ( Sauf oublie vu l'heure et vu la nuit blanche que je viens
de passer ) qu'il n'y a pas de faille dans le code ici présenté.


Merci d'avance



De rien

--
Mon nouveau bébé : http://exinsidephp.free.fr