Page 1 sur 1
Protection de mon hyper-lien
Posté : 14 avr. 2006, 18:41
par max1_
Bonjour a tous
Voila j'ai fait un petit code en php pour appelez des pages dans un autre dossier, mais je crois et j'en suis sur que mon code n'est pas sécuriser !
Pouvez voir s'il y a bien une faille ?
"><?
/*if (!isset($_GET['page'])) {
include("accueil.php");
} else {
include($_GET['page'].".php");
}*/
if (isset($_GET['page'])) {
include ("navig/".$_GET['nav']."/".$_GET['page'].".php") ;
} elseif (isset($_GET['nav'])) {
include ("navig/".$_GET['nav']."/index.php") ;
} else {
include ("accueil.php") ;
}
?>
Merci de votre aide

Re: Protection de mon iper lien
Posté : 14 avr. 2006, 18:50
par mario
<?php
if ( (isset($_GET['nav'])) && (isset($_GET['page'])) ){
include ("navig/".$_GET['nav']."/".$_GET['page'].".php") ;
}
elseif ( (isset($_GET['nav'])) && (!isset($_GET['page'])) ){
include ("navig/".$_GET['nav']."/index.php") ;
}
else
{
include ("accueil.php") ;
}
?>
<?php est préférable à
<? en début de code
pour plus de sécurité, tu peux vérifier si la page existe avec la fonction
file_exists()
Posté : 14 avr. 2006, 19:19
par max1
Bonsoir Mario et merci pour ta réponse aussi rapide
Vais regarder pour la fonction file_exists() et aussi m'enregistrer sur le forum car en invité ça le fait pas

Posté : 14 avr. 2006, 19:46
par max1
Hum après vérification j'ai toujours des failles comme par exemple :
index.php?nav=%3Cb%3E
ou
index.php?nav=../
La on peu acceder
merci de votre aide

Posté : 14 avr. 2006, 23:44
par Hubert Roksor
Il faut simplement que tu n'utilises pas ce qu'entre l'utilisateur pour construire le chemin du fichier. À la place, essaie quelque chose comme:
<?php
$pages = array(
'index' => 'index.php',
'chat' => 'chat.php',
'secret' => 'secret/index.php'
);
if (isset($_GET['page'], $pages[$_GET['page']))
{
$fichier = $pages[$_GET['page']];
}
else
{
$fichier = 'accueil.php';
}
include('./' . $fichier);
?>
Posté : 15 avr. 2006, 10:18
par max1
Bonjour Hubert Roksor

et merci !
Hum j'ai un petit problème a la fin du
if (isset($_GET['page'], $pages[$_GET['page']))
syntax error, unexpected ')', expecting ']'
Posté : 15 avr. 2006, 10:37
par mario
petite correction du code + ajout d'un contrôle d'index pour le tableau
<?php
$pages = array(
'index' => 'index.php',
'chat' => 'chat.php',
'secret' => 'secret/index.php'
);
if ( (isset($_GET['page'])) && (array_key_exists($_GET['page'], $pages)) )
{
$fichier = $pages[$_GET['page']];
}
else
{
$fichier = 'accueil.php';
}
include('./' . $fichier);
?>
http://fr.php.net/manual/fr/function.ar ... exists.php
Posté : 15 avr. 2006, 12:17
par max1
Ok merci beaucoup a tout les deux

et vive PhpFrance

Posté : 12 juil. 2006, 16:18
par TiEuAM
$pages = array(
'index' => 'index.php',
'chat' => 'chat.php',
'secret' => 'secret/index.php'
);
Mais comment faire pour que les element de l'array soit dynamique, crée a partir d'une BDD par exemple.
Merci
Posté : 20 juil. 2006, 16:20
par LKL
Je débarque un peu, mais ça ne serait pas plus facile / efficace d'utiliser un switch - case en php ?
Posté : 20 juil. 2006, 20:50
par Truc
$pages = array(
'index' => 'index.php',
'chat' => 'chat.php',
'secret' => 'secret/index.php'
);
Mais comment faire pour que les element de l'array soit dynamique, crée a partir d'une BDD par exemple.
Merci
Suffit de boucler sur le résultat de la requête et de récupérer une valeur pour l'index (champ index) et une pour le chemin (champ chemin):
$pages = array();
boucle($data=...)
{
$pages[$data['index']]=$data['chemin'];
}
Je débarque un peu, mais ça ne serait pas plus facile / efficace d'utiliser un switch - case en php ?
Chacun sa manière de faire le tableau évite de tout étaler sur 200 lignes on retrouve beaucoup plus facilement les pages de redirection possibles.
Posté : 20 juil. 2006, 22:07
par nicolas
if ( (isset($_GET['page'])) && (array_key_exists($_GET['page'], $pages)) )
{
ou en beaucoup lus imple:
if ( (isset($_GET['page'])) && isset($pages[$_GET['page']]))
{
Posté : 26 sept. 2006, 18:04
par TiEuAM
Je n'était pas repassé par là, et j'ai retrouver mon petit fichier texte avec l'adresse de cette page par hazard, et je vous dit un grand merci pour cette réponse.
Je n'est tjrs pas fait mon systeme pour la création de page entiere sur ma plate-forme, et j'allai justement m'y attardé, encore merci...
Posté : 26 sept. 2006, 19:46
par Truc
Je n'était pas repassé par là, et j'ai retrouver mon petit fichier texte avec l'adresse de cette page par hazard
Et les favoris alors
Et sinon l'inscription qui ne coute rien et tu serais averti par mail lors d'une réponse.