Include en bon et dû forme avec un switch ?

Répondre
burnedsoul
le 12/01/2005 à 14:22
burnedsoul
Salut à tous, un ptit moment que je n'étais pas passé sur le forum, meilleurs voeux :)
Voilà, certains le savent sans doute (et d'autres sans doute pas), un ver s'attaque à des failles de sécurités de serveur pour les includes dis "mal formés".
En effet, le fameux " <? include("mapage.php") ?>" est utilisé par le ver ...
Bref la parade consiste à insérer ce code à la place de celui plus haut :
<?
$pages = array('news.html', 'page2.html', 'page3.html');
if( in_array($page, $pages) )
{
include($page);
}
else
{
die("Raté !");
}
?>


Seulement comment le combiner à un switch quand on a un truc style :

<?
switch ($page)
{
case 'news':
include("news.php");
break;
case 'forum':
include("forum_catégories.php");
break;
...
}
?>

Tel est la question ^^
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 12/01/2005 à 14:41
LA GLOBULE
Et il est ou ton soucis la dedans ?

Si ton switch possede un default, il n'y a aucun soucis.

Voici un article interessant à lire :)
burnedsoul
le 12/01/2005 à 16:23
burnedsoul
Merci pour l'article, site très instructif que je ne connaissais pas :)
Sinon pour mon problème, c'était dû au fait que ma variable $page redirigeait vers une page mais elle devait porter exactement le même nom que la variable, ce qui n'était pas le cas. Je l'ai résolu en utilisant un tableau en 2D. Donc merci :)
Il y a d'autres grosses failles (ou erreur de codage) qui sont connues ?
Webmaster de Clikmag http://www.clikmag.fr
burnedsoul
le 16/01/2005 à 21:59
burnedsoul
Dernier ptit problèmes, j'ai donc modifié le code en conséquence mais je constate que la page desfois est blanche, je pense que cela est dû car la page par défaut (comme dans le switch) n'est pas reglée mais je sêche sur la manière de le faire. Voici le code actuel :

<?
$pageAutorise = array('news' => 'index.php', 'forum' => 'forum.php',
'archives' => 'archives.php',);
if ( (isset($_GET['page'])) && (isset($pageAutorise[$_GET['page']])) )
{
include($pageAutorise[$_GET['page']]); // Nous appelons le contenu central de la page
}
?>
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 16/01/2005 à 23:31
LA GLOBULE
Ben fais un truc du genre :

si ma page existe {
include ma_page;
}
else {
include page_defaut;
}
burnedsoul
le 17/01/2005 à 15:26
burnedsoul
J'ai fait ça mais j'ai peur qu'en matière de sécurité cela soit moyen :s :
<?
$pageAutorise = array('news' => 'index.php', 'forum' => 'forum.php',
'archives' => 'archives.php',);
if ( (isset($_GET['page'])) && (isset($pageAutorise[$_GET['page']])) )
{
include($pageAutorise[$_GET['page']]); // Nous appelons le contenu central de la page
}
else
{
include("news.php");
}
?>
Webmaster de Clikmag http://www.clikmag.fr
Rex
le 17/01/2005 à 16:26
Rex
En terme de sécu, c'est bon.
En terme de codage, ça l'est moins ...
Un hamster dit : J'ai dressé le scientifique, quand j'appuie sur le bouton, il me donne des graines
Rex
le 19/01/2005 à 21:20
Rex
Les balises PHP correctes, c'est "<?php" et non "<?".
Les "include" devrait être remplacé par des "require".
D'ailleurs, pourquoi des guillemets dans le deuxième "include" ? Il n'y a pas de variables à l'intérieur, donc une chaîne statique est préférable entre apostrophes.
Un hamster dit : J'ai dressé le scientifique, quand j'appuie sur le bouton, il me donne des graines
bibi
le 19/01/2005 à 21:55
bibi
c koi la différence entre

include(bla.php) et include("bla.php");

merci frederic
commit suicide
Répondre
LoadingChargement en cours