Pseudo-frames et sécurité

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 739 fois - Téléchargée 27 fois

Contenu du snippet

Ce code à pour but d'empêcher à des utilisateurs mal intentionnés d'avoir accés aux pages de votre site qui ne sont là que pour être inclues par la méthode des pseudo frames.

ex: le menu gauche est inclus comme ceci :
<?php include('menu_gauche.php)'; ?> l
à où il doit être. Le code de menu_gauche.php contient toutes les données pour afficher votre cher menu. Mais! si on tape www.monsite.com/menu_gauche.php, on tombe direct sur notre ptit menu, et on ne veut pas ça car il se situe dans un espace membre!

Voilà comment empêcher ce crime...

Source / Exemple :


//le but ici est de sécuriser les pseudo-frames
//en effet, on ne peut que tres difficilement protéger les fichiers à inclure.
//on ne veut pas pouvoir accéder aux pages à inclure de cette façon:
//http://www.monsite.com/mapage.php, mais plutôt de celle ci:
//http//www.monsite.com/accueil.php?page=bidule
//
//voilà une solution toute simple qui évite de se prendre la tête

//contenu de mapage.php

//on stocke l'url de la page.
//PHP_SELF est une variable qui contient l'url en cours.
//ici, le choix de stocker $PHP_SELF dans $path est purement un choix d'ergonomie

$path=$PHP_SELF;

//Ici, on regarde si le nom de la page à protéger se trouve dans l'url en cours.
//La fonction eregi() recherche une occurence de mapage.php dans l'url
//et renvoie VRAI si elle trouve.

if ( eregi("mapage.php",$path) )
	
	{
		//si VRAI alors on ne passe pas!
		echo "Accès direct impossible"; 
		echo "<br>"; 
		echo "vous essayez d'accéder à un fichier protégé en passant par: ";
		echo $path; 
	}

else 
	
	{ 
		//sinon, on passe
		echo "Access granted";
	}

?>

//contenu de membres.php

<?php

if ($page==1) { include('mapage.php'); }

else { echo "rien"; }

?>

Conclusion :


Testez chez vous!

Créez le fichier mapage.php. Créez le fichier membres.php.
Dans votre navigateur sous environnement php (copiez les deux fichiers dans le répertoire www/monsite dans easyphp, par exemple) accédez à membres.php puis à membres.php?page=1 puis directement à mapage.php.

PREMIER CAS: on se retrouve devant: rien
SECOND CAS: on se retrouve devant: acces granted
DERNIER CAS: on se retrouve devant: acces direct impossible (..)

A faire dans chaque page à sécuriser! (seulement le code de mapage.php)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Pfioouuu... je viens de merelire... .. .

Désolé pour le roman... et pour les fautes... .. . :oS

Quoi ???.. . j'en rajoute une couche là... ok je sors... .. . ;o)

@ tchaOo°
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Moi je fais comme l'a dit Psyk et ça marche très bien...

Toutes mes pages à inclure sont dans un fichier avec un .htacces dedans tu mets...

AuthName "admin"
AuthType Basic
<Limit GET POST>
Deny From All
</Limit>

et bien même toi tu peu plus aller directement dessus... après c'est avec la bonne page ou par ftp que ça se passe... par contre pourquoi en .inc.php ça marche très bien en laissant en .php il y a une diference ?

sinon l'idée de base du code est pas mal mais moi je le vois plus pour faire une page qui n'affiche pas le meme contenu selon l'endoit ou tu l'appel (avec un include) par exemple en changeant de design ou de fonctions... ou de cible (par ex: pour une redirection) ou de je ne sais quoi... du genre...

if ( eregi("mapage.php",$PHP_SELF) )

{
include "header2.php";
echo "<center>Amis visiteur... .. .

voici mon premier text

je sais pas quoi dire

alors bah... .. .

je met n importe quoi... .. . :oP</center>";
include "footer2.php";
}

else

{

include "header1.php";
echo "Comprends tu amis membre
comme là je sais pas forcement

quoi dire de plus... et bien... .. .
J arrete de parler pour ne rien dire... .. . :oD";
include "footer1.php";
}

?>

parce que sinon le probleme si ce n'est la fragilitée de la protection (mais admettons que c'est fait pour décourgager les petits plaisantins et non les vrai pirates) c'est que pour une page 100% php ça peut encore aller de l'integrer et encore que il faut voire la complexité du script à integrer... mais pour du html... c'est la merde s'il faut tout mettre dans un echo ou s'il faut fermer et reouvrir les balises php à tout va...

il sera plus simple de mettre ça en début de page

<?php
if ( eregi("mapageaproteger.php",$PHP_SELF) ) die (" <html> <head> <title> Accès refusé... .. .</title> </head>

<center>MON MESSAGE COMME QUOI JE SUIS PÔ CONTENT !!!</center> </html>");
?>

c'est plus court donc plus rapide à integrer et ça revient au même vu que c'est le même principe... .. . ;o)

Mais bon... sauf si utilise des variable dans l'url du genre ?module= il y a peut de chance que quelqu'un tombe directement dessus... .. .
vus que coté client ton include n'apparait pas c'est ton code html et java comme si la page était faite d'une piece... c'est coté serveur que ça se passe donc comment veux tu que quelqu'un voie que telle portion de ta page est un include d'un repx/pagey.extensionz... hormis les grand classics du genre header.php, footer.php, conf.php, function.php, etc... et là on en revient au fait que c'est trop legé comme solution de protection... il faut empcher de voir directement de façon "irremediable" ce genre de page mais aussi et surtout d'empecher leur téléchargement... et là... une seule solution, tout du moins une seule solution... simple... le .htaccess... .. . :o)

Voili voilou... .. .

Amicodement... .. . ;o)

@ tchaOo°
Messages postés
115
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
13 mai 2006

Le probleme lié a la technique de la variable initialisé dans index.php est que si le serveur tourne en register_global ON et bien la protection est facilement bypassable. Personellement je fait comme pour les fichier header en C, je rajouter une constante dans mon index, define("INDEXLOAD", TRUE);
et je test is_defined("INDEXLOAD");
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Ca marche a coup sur !!!
C surement la méthode la + simple et la plus éfficace
++++
Messages postés
1
Date d'inscription
samedi 4 décembre 2004
Statut
Membre
Dernière intervention
5 décembre 2004

Ué immortalPC je fais exactement pareil que toi
moi ca m'est venu de la compilaton conditionnelle en langage C

voial
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.