Selon vous quelle est la methode la plus securisée pour les pseudos frames ?
< ?
if ( file_exists($page)) {
include($page);
}
else{
include(´default.php´);
}
? >
ou
< ?
if(isset($page)){
include($page.´.php´);
}
else{
include(´default.php´);
}
? >
Aucune des deux.
La première ne sert à rien. L´éventuel attaquand cherchera à affiché une page qui existe.
La deuxième non plus. Il suffit que l´éventuel attaquant arrive à définir la variable ( c´est facilement faisable si register_globals est à ON) pour afficher la page qu´il veut.
Voici un code 100% sécurisé:
< ?php
switch ( $page){
case ´page1´:
break;
case ´page2´:
break;
default:
$page = ´default´;
}
include $page.´.php´;
Tu es sur de ce que tu avance ou ce ne sont que des suppositions ?
J´ai besoin d´un avis serieux stp car je n´ai pas envie refaire toutes mes pages à cause d´une info bidon.
" L´éventuel attaquand cherchera à affiché une page qui existe"
Là je comprends ce que tu veux dire.S´il met en variable une page qui existe il tombera sur cette page ( que j´aurais faite moi meme), et apres ?
en quoi est ce que ça l´avance ?
" Il suffit que l´éventuel attaquant arrive à définir la variable"
Ben la variable il se trouve qu´elle apparait dans l´url de toute façon ( passée en GET) donc il n´a aucun mal à la changer, mais s´il la change pour une qui n´existe pas il tombe sur une erreur et et s´il met une qui existe il tombe sur ma page.
Donc là encore je ne vois pas ce que tu veux dire.
Developpe stp.
En fait, pour sécuriser tes pseudos frames, c´est de vérifier la valeur de la variable $page afin qu´elle ne commance SURTOUT PAS par http://.
Car c´est un moyen de hack ca, le mec il cree un script mettons qui remplace le fichier index.php pour un autre ( avec dedans " HACKED BY machin"), il suffit qu´il foute ce script sur un serveur, et mette l´adresse de ce script dans la variable.
Si tu fais une vérification de ce type, tu ne risques rien.
En l´occurence, pour ta question du début, c´est la deuxième la plus sécurisé, car elle oblige le script a afficher un fichier . php. La première peut faire afficher n´importe quel type de fichier.
^^
exact, je n´avais pas remarqué qu´on pouvait mettre une adresse dans la variable.
C´est vrai que c´est dangereux, n´importe qui peut créer un index.html qui surclasse mon index.php, voire pire je sais pas.
leBoss
Tu peux m´expliquer comment empecher de passer http:// en variable ( et meme ftp://https://www.jeuxvideo.com// d´ailleurs ça doit etre dangereux aussi)
Blawk
au sujet des switchs ça n´est pas une solution que je souhaite utiliser ( trop de pages, j´ai pas envie de faire 50 cases à chaque fois).
Je prefère utilisr les pseudos frames avec une des 2 techniques ennoncées plus haut, mais sécurisée.
etant novice en php
je me suis fait une pseudo frame pour monsite qui consiste en :
< ?
if ( $page==´lien1´ || $page==´images´ || $page==´news´)
{
include($page.´.php´);
}
? >
j´aimerai savoir comment securiser ca sans pour autant faire des manip fastidieuse ( ou alors qu´on m´explique en detail
merci et @+
Toi si tu n´as que 3 pages à choisir, tu peux utiliser un switch ( cf post de blawk).
" Weevil666 Posté le 12 juillet 2003 à 02:21:57
Toi si tu n´as que 3 pages à choisir, tu peux utiliser un switch ( cf post de blawk)."
non j´ai pas que 3 page mais j´ai pas fini d´implanter mes nombreuse page ( une vingtaine) mais c assez facile a faire de les implanter
par contre de securise
@+
Si t´en as plus d´une vingtaine je te conseille pas les switchs.
Pour ma question c´sest bon on m´a soufflé la fonction basename().
Ca a l´air de fonctionner.
PS : comment faites ovus pour eviter les messages d´erreur dus aux variables erronées ?
J´ai testé quelques uns de vos sites et chacun était protègé contre ça, mais aucun n´affichait d´erreur.
genre :
Warning: Failed opening ´slurp.php´ for inclusion ( include_path=´.:/upload´)
J´ai encore un ennui lol
depuis que j´ai ajouté la fonction basename() mon else ne fonctionne plus.
Dans l´exemple suivant avant lorsque $page n´etait pas renseigné ça renvoyait vers default.php
Maintenant le else n´est plus pris enc ompte et j´ai une erreur.
C´est quoi qui cloche ?
< ?
$page = basename($page);
if ( isset($page)){
include $page.´.php´;
}
else{
include ´default.php´;
}
? >
La fonction basename, sans autre paramètres te renverra $page = " slurpphp", il faut que tu lui précises d´enlever l´extension " php" :
$page = basename($page,php);
disons que j´ai une page http://blabla.free.fr/je_vais_te_faire_chier.php
ds ta 2eme technique suffit de mettre page=http://blabla.free.fr/je_vais_te_faire_chier et t´es mal...elle est pa du tt securisé ta technique...utilises des switch c´est pt-etre plus long mais plus sur
La fonction basename est là pour ca, elle gardera pour $page seulement " je_vais_te_faire_chier", et cherchera donc une page locale.
Je ne connaissais pa la fonction basename de sunmagic. Sinon tu peux toujours utiliser un bon vieux ereg().
< ?
if(ereg("http://",$page))
include("defaut.php");
? >
basename extrait le nom du fichier dans une adresse.
basename(´dossier/dossier/fichier.php´)
revoie ´fichier.php´
Ce qui à la reflexion pose un problème: tes pages doivent être toutes au même niveau, ce qui n´est pas toujours très pratique.
est ce que ce script serai plus securoise que mon ancien :
< ?
if ( $page==´lien1.php´ || $page==´images.php´ || $page==´news´)
{
include($page.´´);
}
? >
@+
kif-kif-bouriko.
A part que le deuxième est plus contragnant. Et le . ´´ ne sert à rien.