Securité piratage

annemarie1 Messages postés 85 Statut Membre -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je voulais savoir si mon code était sécurisé , j'ai un tableau de 2 colonnes
dans la première colonne j'ai fait des liens en php

<?php
echo '<a href="index2.php?page=cours">COURS</a>';
?>

puis dans la deuxième colonnes j'ai mes includes

<?php
if ($_GET['page'] == "accueil")
{
include("accueil1.html");
}else{
include("accueil1.html");
}

Pourriez vous me dire si celà est suffisant pour la sécurisation
Un grand merci pour votre aide
Anne Marie

7 réponses

HACKER 712 Messages postés 1463 Statut Contributeur 255
 
Bonjour, je mettrais plutôt ca à ta place :
<?php
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php'))
{
include $_GET['page'].'.php';
}
else
{
include 'accueil1.html';
}
?>
0
annemarie1 Messages postés 85 Statut Membre
 
merci pour ta réponse, je l'insere comme ca ? ( je ne suis vraiment pas doué en php )

<?php
if(isset($_GET['page']) AND file_exists($_GET['page'].'accueil.php'))
{
include $_GET['page'].'accueil.php';
}
else
{
include 'accueil1.html';
}
?>


par contre j'ai aussi trouvé ce code très securisé parat il !


$page=preg_replace("/[^a-z0-9_ ]/i", "", $page);
if(!@include("includes/$page.php"))die("Cette page n'existe pas sur le serveur, merci d'informer le webmaster du site si ce problème venait à se reproduire.");

mais le probleme c'est que je n'y comprends rien , pourrez tu me dire s'il te plait où mettre ce code dans mes includes

merci encore pour ton aide , je fais un site gratos pour un ami .
0
HACKER 712 Messages postés 1463 Statut Contributeur 255
 
non,

if(isset($_GET['page']) AND file_exists($_GET['page'].'.php'))

$_GET['page'] sera remplacé par la page que tu veux, auquel on ajoute l'extansion .php
0
annemarie1 Messages postés 85 Statut Membre
 
alors comme ca ?
if(isset($_GET['accueil']) AND file_exists($_GET['accueil'].'.php'))
{
include $_GET['accueil'].'.php';
}
0
HACKER 712 Messages postés 1463 Statut Contributeur 255
 
NON !

laisse comme je te l'ai donné, et tu auras une url du type ?page=forums

page sera interprétée par forums, auquel on ajoutera .php
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Pas top ta solution HACKER 712.
Si une personne met dans l'url page=http://hacker/toto ça risque de faire du dégât ^^.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,
Voici un petit lien qui te permet de faire des include sécurisés : https://openclassrooms.com/fr/courses

Cdlt
0
annemarie1 Messages postés 85 Statut Membre
 
Bonjour

j'etais juste dessus, mais comme je suis un peu null en php ca va etre un peu difficile ...par contre pour le code que j'ai trouvé

$page=preg_replace("/[^a-z0-9_ ]/i", "", $page);
if(!@include("includes/$page.php"))die("Cette page n'existe pas sur le serveur, merci d'informer le webmaster du site si ce problème venait à se reproduire.");


ce code est t'il valable ? comment puis je l'inserer dans l' exemple du site du zero :

<?php

$page = (!empty($_GET['page'])) ? htmlentities($_GET['page']) : 'index';

$array_pages = array(
'index' => 'index.php',
'page1' => 'page1.php',
'page2' => 'page2.html'
);

if(!array_key_exists($page, $array_pages)) include('index.php');

elseif(!is_file($array_pages[$page])) include('erreur.php');

else include($array_pages[$page]);

?>
un grand merci pour l'aide que vous m'apporter
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > annemarie1 Messages postés 85 Statut Membre
 
$page=preg_replace("/[^a-z0-9_ ]/i", "", $page);
Cela permet de vérifier qu'il n'y a que des caractères alphanumériques. Donc grâce à ça, une page ne pourra pas venir d'un site extérieur. Mais cela n'est pas top pour autant car si une personne arrive à uploader une page sur ton serveur (faille upload par exemple) il pourra l'exécuter.

Le mieux est vraiment de recenser dans un tableau le nom des pages et de vérifier que le GET['page'] appartient à ce tableau comme sur le site susmentionné.

Cdlt
0
HACKER 712 Messages postés 1463 Statut Contributeur 255
 
Si elle n'existe pas, il y a l'acceuil !

cf file_exists
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Oui, mais comme dit plus haut, une personne peut très bien mettre une page sur un autre site comme le sien. Le fichier existera alors et la condition passera provoquant une grosse faille de sécurité.
0
annemarie1 Messages postés 85 Statut Membre > fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention  
 
merci pour ta réponse

puis je faire ca donc ?

<?php

$page = (!empty($_GET['page'])) ? htmlentities($_GET['page']) : 'index';

$array_pages = array(
'cours' => 'cours.html',
'ateliers' => 'ateliers.html',
'festivite' => 'festivite.html'
'stages' => 'stages.html',
'concerts' => 'concerts.html',

);

if(!array_key_exists($page, $array_pages)) include('index.php');

elseif(!is_file($array_pages[$page])) include('erreur.php');

else include($array_pages[$page]);

?>

Merci encore
0
annemarie1 Messages postés 85 Statut Membre > fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention  
 
bon et bien j'ai fait comme ca ? est suffisant contre le piratage pour les includes

<?php

$page = (!empty($_GET['page'])) ? htmlentities($_GET['page']) : 'accueil';

$array_pages = array(
'accueil' => 'accueil.html',
'ateliers' => 'ateliers.html',
'cours' => 'cours.html',
'festivite' => 'festivite.html'
);

if(!array_key_exists($page, $array_pages)) include('accueil.php');

elseif(!is_file($array_pages[$page])) include('erreur.php');

else include($array_pages[$page]);

?>
merci pour ton aide précieuse
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Bonjour,
J'aurais rajouté à la place de !empty($_GET['page']) : isset($_GET['page']) qui est plus prévu pour tester si la variable est définie ou pas. Si la variable est définie est vide, elle sera prise en compte dans la condition sur le tableau.
Cependant, à part ce petit point discutable, le reste me paraît acceptable d'un point de vue sécurité.

Cdlt,
0