[php] Avis sur la sécurité de mon code (include)
10 messages
• Page 1 sur 1
-

GarGamel55 - Nouveau WRInaute

- Messages: 34
- Inscription: 28 Sep 2006
[php] Avis sur la sécurité de mon code (include)
Bonjour à tous,
Je voulais avoir votre avis sur la sécurité (ou l'insécurité) de ce bout de code :
Depuis mon index j'appelle différentes pages qui viennent s'ouvrir dans le centre de celui-ci (pseudo frame). Evidemment cela implique d'éventuels problèmes de sécurité.
N'étant pas du tout un hacker averti, je voulais savoir si ce code est exploitable par une personne mal attentionée ?
Merci d'avance
Je voulais avoir votre avis sur la sécurité (ou l'insécurité) de ce bout de code :
- Code: Tout sélectionner
$p='';
if (isset($_GET['page'])) $p=$_GET['page'];
if (!empty($p) && file_exists('rep/'.$p.'.php')) include('rep/'.$p.'.php');
else include('accueil.php');
Depuis mon index j'appelle différentes pages qui viennent s'ouvrir dans le centre de celui-ci (pseudo frame). Evidemment cela implique d'éventuels problèmes de sécurité.
N'étant pas du tout un hacker averti, je voulais savoir si ce code est exploitable par une personne mal attentionée ?
Merci d'avance
-

GarGamel55 - Nouveau WRInaute

- Messages: 34
- Inscription: 28 Sep 2006
Kaio a écrit:Salut,
On peut inclure n'importe quelle page php de ton site et pas seulement dans le répertoire "rep".
exemple : ?page=../rep_admin/index
++
Je suis en local uniquement pour l'instant et quand j'appelle un fichier en dehors du repertoire 'rep' je retombe pourtant sur la page d'accueil.
(mais comme je précise je suis pas hacker ...)
et comment je peux y rémédier, via un array qui liste les pages autorisés ?
-

GarGamel55 - Nouveau WRInaute

- Messages: 34
- Inscription: 28 Sep 2006
J'ai rajouté ceci
Est-ce suffisant ?[/quote]
- Code: Tout sélectionner
$p='';
if (isset($_GET['page'])) $p=$_GET['page'];
$pageok = array('', 'accueil', 'page1', 'page2'....);
if (!in_array($p, $pageok)) {
include('accueil.php');
}
if (!empty($p) && file_exists('rep/'.$p.'.php')) include('rep/'.$p.'.php');
else if (!empty($p) && file_exists($p.'.php')) include($p.'.php');
else include('accueil.php');
Est-ce suffisant ?[/quote]
-

rog - WRInaute passionné

- Messages: 1662
- Inscription: 21 Sep 2006
j'éviterai ce type de shema
le mécanisme empêche potentiellement une injection jusqu'au jour ou l'on découvre un bug sur une fonction
et la ton filtre saute et tu es vulnerable
faut savoir que les caractères du style ? & @ et # modifient les interprétations d'url
pour injecter ton site faudrait bugger in_array et file_existe ce qui n'est pas possible actuellement (Ã ma connaissance)
mais la vraie solution est d'inclure une constante
rog
le mécanisme empêche potentiellement une injection jusqu'au jour ou l'on découvre un bug sur une fonction
et la ton filtre saute et tu es vulnerable
faut savoir que les caractères du style ? & @ et # modifient les interprétations d'url
pour injecter ton site faudrait bugger in_array et file_existe ce qui n'est pas possible actuellement (Ã ma connaissance)
mais la vraie solution est d'inclure une constante
rog
-

GarGamel55 - Nouveau WRInaute

- Messages: 34
- Inscription: 28 Sep 2006
rog a écrit:
mais la vraie solution est d'inclure une constante
Tu pourrais développer stp ?
-

Kaio - Nouveau WRInaute

- Messages: 15
- Inscription: 9 Aoû 2006
Tu aurais pu simplement virer les "../" de ta variable $p
Faire un tableau c'est bien mais pas vraiment pratique puisque tu dois ajouter chaque nouvelle page que tu autorises...
Le mieux c'est de faire de l'url rewriting. Si on tente de se ballader sur ton site par l'include avec du "../" ça ne marche pas car le serveur tente d'abord de changer de répertoire...
Faire un tableau c'est bien mais pas vraiment pratique puisque tu dois ajouter chaque nouvelle page que tu autorises...
Le mieux c'est de faire de l'url rewriting. Si on tente de se ballader sur ton site par l'include avec du "../" ça ne marche pas car le serveur tente d'abord de changer de répertoire...
-

GarGamel55 - Nouveau WRInaute

- Messages: 34
- Inscription: 28 Sep 2006
rog a écrit:aie
une variable est une donnée qui est modifiable
une constante est une donnée que l'on ne peut modifier
voir define
rog
lol, j'étais parti sur complétement autre chose ...
Faire un tableau c'est bien mais pas vraiment pratique puisque tu dois ajouter chaque nouvelle page que tu autorises...
Le mieux c'est de faire de l'url rewriting. Si on tente de se ballader sur ton site par l'include avec du "../" ça ne marche pas car le serveur tente d'abord de changer de répertoire...
Oui l'array n'est pas ultra pratique, mais le nombre de page que je devrais autoriser sera limité
Et j'utilise aussi l'url rewriting
Merci pour vos réponses
10 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- [php] Faille de sécurité include()
- php include dans template phpbb 3 pour mettre une pub quel code ?
- Marque blanche, include et sécurité
- PHP Include: code footer.php OU footer.inc.php ??
- Code de sécurité
- Sécurité site web : injection code malicieux
- Faire un include du code d'Admanager
- Un trojan spammeur contourne le code de sécurité captcha
- Sécurité php
- Securite PHP/SQL
Consultez la description détaillée des produits ou services de Google suivants : Google Code
- Test HTTP header
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: sim100 et 1 invité
