begin process at 2012 02 11 18:25:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > PSEUDO-FRAMES ET SÉCURITÉ

PSEUDO-FRAMES ET SÉCURITÉ


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité & Cryptage Niveau :Débutant Date de création :03/02/2003 Date de mise à jour :03/02/2003 02:57:00 Vu :7 643

Auteur : da3m0n

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

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

  • //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"; }
  • ?>
//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)


 Sources de la même categorie

Source avec Zip Source avec une capture ACCÈS, ESPACE MEMBRE AVEC INSCRIPTION ET DÉSINSCRIPTION PAR ... par stephelle
Source avec Zip CRYPTAGE REVERSIBLE par Mokost
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
Source avec Zip PROTÉGEZ VOS LIENS DE TÉLÉCHARGEMENT PAR MOT DE PASSE ET/OU ... par unlien
CRYPTAGE/DECRYPTAGE MCRYPT par sephirothgeek

Commentaires et avis

Commentaire de wonesek le 03/02/2003 11:18:23

Y a juste un petit probleme, j'utilisais ta technique jusqu'au jour ou, je me suis dis que ce passerait-il dans le cas ou "mapage.php" apparaitrait dans $PHP_SELF sans pour autant etre le fichier terminal (e.g le nom d'un repertoire) je sais c'est une question con mais c'est un cas à prendre en compte quand meme.
une autre maniere pour eviter l'acces aux fichier d'inclusion serait donc:

------index.php-------
[...]
function parent_file(){return 1;}
[...]
include("foo.inc");
[...]
------------------------

------foo.inc----------
if (!function_exists('parent_file')) die();
[...]
-----------------------

voila plus court, peut etre moins jolie mais quand meme efficace.

D'ailleurs je me posait la question n'y a-t-il pas moyen de corrompre $PHP_SELF comme pour $HTTP_REFERRER ??

Commentaire de wonesek le 03/02/2003 11:18:28

Y a juste un petit probleme, j'utilisais ta technique jusqu'au jour ou, je me suis dis que ce passerait-il dans le cas ou "mapage.php" apparaitrait dans $PHP_SELF sans pour autant etre le fichier terminal (e.g le nom d'un repertoire) je sais c'est une question con mais c'est un cas à prendre en compte quand meme.
une autre maniere pour eviter l'acces aux fichier d'inclusion serait donc:

------index.php-------
[...]
function parent_file(){return 1;}
[...]
include("foo.inc");
[...]
------------------------

------foo.inc----------
if (!function_exists('parent_file')) die();
[...]
-----------------------

voila plus court, peut etre moins jolie mais quand meme efficace.

D'ailleurs je me posait la question n'y a-t-il pas moyen de corrompre $PHP_SELF comme pour $HTTP_REFERRER ??

Commentaire de Psyk le 09/03/2003 03:02:28

Hum... rennomer les fichier à intégrer en .inc.php et mettre un htaccess dessus serait plus performant a mon avis...

Commentaire de Leirn le 21/01/2004 08:57:42

suffit de faire une page contenant

&lt;form method="post" action="url_de_ta_page"&gt;
&lt;input type="hidden" value="1" name="page"&gt;
&lt;input type="submt" value="Hop !"&gt;
&lt;/form&gt;

et de cliquer sur le bouton pour baiser ton systeme de protection

Commentaire de ImmortalPC le 17/11/2004 21:38:21

Moi j'utilise ça :
Dans ma page De style (index.php)
Là où il y a les instruction pour traduire ?ID=FAQ
je met en haut
<?php
$pagescorrect = "oui";
?>

ouis dans le fichier a inclure je met
<?PHP if(!IsSet($pagescorrect)){Header("Location: http://www.mon_site.com/index.php?ID=FAQ");} ?>
donc si $pagescorrect existe alors accès autoriser si non, redirection vers la meme page mais sous forme include("");
avec ?ID=FAQ

@++++
Immortal-PC

Commentaire de zecdroms le 05/12/2004 18:44:03

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

voial

Commentaire de ImmortalPC le 05/12/2004 21:43:35

Ca marche a coup sur !!!
C surement la méthode la + simple et la plus éfficace
++++

Commentaire de wonesek le 08/12/2004 14:49:37

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");

Commentaire de kankrelune le 30/12/2004 17:04:21

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... .. .<br>
                  voici mon premier text<br>
                  je sais pas quoi dire<br>
                  alors bah... .. .<br>
                 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<br>
          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><body> <br><br> <center>MON MESSAGE COMME QUOI JE SUIS PÔ CONTENT !!!</center> </body></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°

Commentaire de kankrelune le 30/12/2004 17:10:43

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°

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,137 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales