Include en bon et dû forme avec un switch ?
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
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 :)
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
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
Ben fais un truc du genre :
si ma page existe {
include ma_page;
}
else {
include page_defaut;
}
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
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
Ah bon, pourquoi ça ?
Webmaster de Clikmag http://www.clikmag.fr
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
le 19/01/2005 à 21:55
bibi
c koi la différence entre
include(bla.php) et include("bla.php");
merci frederic
commit suicide