PROTECTION D'UN SITE CONTRE LES ACCES DIRECTS AUX PAGES

cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005 - 29 nov. 2003 à 08:55
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 19 juin 2006 à 23:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18288-protection-d-un-site-contre-les-acces-directs-aux-pages

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
19 juin 2006 à 23:14
Je me demande une chose :

Personnellement j'utilise le code suivant sur un site. J'aimerais savoir si il y a faille ou non. A noter que admin.php est géré en htaccess. Comme je tatonne le PHP, ça serait bien de m'aiguiller.


<?PHP
if (isset($_GET['page'])){
switch($_GET['page']){
case 'admin';
include('admin.php');
break;
case 'news':
include('news.php');
break;
case 'sources':
include('Sources.php');
break;
case 'mail';
include('mail.php');
break;
}}else{
include('news.php');
}
?>
rem78 Messages postés 230 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 5 avril 2015
5 nov. 2004 à 01:37
Oups !!! j'ai oublié de préciser que ce message etait destiner à bucherd....mais toutes autres participations est la bienvenue ;-)

ciao !!

rem78
rem78 Messages postés 230 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 5 avril 2015
5 nov. 2004 à 01:35
Bonjour,

Je viens de lire ton message concernant le script de PROTECTION D'UN SITE CONTRE LES ACCES DIRECTS AUX PAGES, et justement je recherche un moyen de protéger efficacement mon site de ce genre d'accès direct et je voudrais savoir si tu aurais un script qui permettrai de réaliser cette protection sans altérer son fonctionnement et qui soit compatible 100% avec des Frames car mon site est entièrement fait de Frames plein écran sauf la page d'index.html sinon toutes les autres pages sont en php.
Voir les liens concernant ce problème mis sur ce site :
http://www.phpcs.com/forum.v2.aspx?ID=326251

Merci de ton aide !!

rem78
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
2 févr. 2004 à 11:28
Ou sinon tu peux faire plus simple, y a toujours moyen de passer au travers, mais beaucoup moins facilement que dans tout les exemples cités précédemment... Je dirais même que si tu connais pas la structure du site, tu peux pas t'en sortir lol...

Il te suffit de mettre le code suivant dans tes pages que tu veux protéger:
if (eregi("nomdelapage.php", $PHP_SELF)) {
Header("Location: index.php");
die();
}

Et ensuite pour accéder à cette page depuis ton site, tu fais dans ta page index.php:
include ("nomdelapage.php");

Ce script a pour but de bloquer l'acces à la page si elle est ouverte directement depuis le navigateur.. Il faut paser par index.php pour la voir..
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
26 janv. 2004 à 16:50
MRR Tu peux faire un define sur ta propre page PHP et inclure ensuite l'autre.. Y a toujours des combine...

Si tu connais le nom de ton cookie, il faut déjà trouver sa valeur..
Et pour la valeur, tu peux faire un codage de l'adresse ip par exemple
Même si une personne ursupe la valeur d'un autre, Sa fonctionnera pas.
cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005
26 janv. 2004 à 16:44
ouais mais si tu connais le nom du cookie, tu sais tres facilement rentrer sur ta page !! tandis que le define, tu ne sais pas le faire autrement qu'en php, donc on ne sait pas acceder a tes pages si tu n'es pas connecté !!!

(les sessions utilisent peut etre aussi un peu les cookies)
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
26 janv. 2004 à 15:35
Genre les cocos, pourquoi vous vous cassez la tronche comme ça j'y crois pô..

Dans ton index.php tu met
Set_Cookie("jambon","beurre",date()+3600);

Attention a faire de cette opération une des première, avant l'affichage de n'importe quelle ligne.. sinon ça plante..

Et dans toutes les autres pages, tu fais
if (!isset($jambon) OR $jambon!="beurre"){
header ("location: index.php);
}

Et ton mec sera redirigé tout seul sur ta page d'accueil si il n'y est pas encore passé...
Et voilà
cs_matou82 Messages postés 5 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 26 janvier 2004
26 janv. 2004 à 15:30
Huugooo a dit:
--Je ne voudrais pas dire de bétises mais avec ta méthode, qu'est-ce ---qui pourra nous empêcher de faire admin.php?Init=True ???
--Puisque ton test
--if(INSITE != 'true') {
--echo "Cette page ne peut pas etre vu comme ca !";
--exit();
--}

Je crois qu'il suffirait d'utiliser la fonction constant('INSITE') qui permet de retourner la valeur d'une constante, dans le cas où ce ne serait pas une constante(variable dans l'url par exemple ou constante inexistante) alors ça retourne rien.
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
22 janv. 2004 à 08:26
Il faut d'abord que tu comprenne la différence entre PHP et HTML je pense..
Parce que ce que t'as posté un peu plus haut, c'est un fichier statique HTML standard...

Je te laisse chercher dans les turoriaux lol
teeef Messages postés 3 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 21 janvier 2004
21 janv. 2004 à 23:41
si tu peut me sends 1 index exemple ça serait bien je suis pas encore douee la je debute ;)
transfear Messages postés 58 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 29 septembre 2006
21 janv. 2004 à 23:13
lol c'tun peu normal que ça fonctionne pas ton index teeef, t'as même pas de balise php pour vérifier la valeur des variables/cookies.
teeef Messages postés 3 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 21 janvier 2004
21 janv. 2004 à 21:52
re tien j'ai tester mes toujour rien a faire pour moi voici mon index je rejoute ou les code
<HTML>
<HEAD>
<TITLE>blabla</TITLE>
</HEAD>

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0"
WIDTH=100% HEIGHT=100%>

</OBJECT>

</HTML>
merci
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
21 janv. 2004 à 17:34
Sûrement pas .html

Mais si ça te fait plaisir d'appeller ton fichier

vivelephpetlessandwichsaufromage.php tu peux, rien ne t'en empêche lool...
teeef Messages postés 3 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 21 janvier 2004
21 janv. 2004 à 17:31
qui peut me sends les code complet comme il faut parce que j'ai tester perso ça fait que dal chez moi esque les fichier index doit avoire le nom index ou on peut les nomer genre home.php home.html
merci
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
13 janv. 2004 à 09:39
Tiens essaye de faire une variable de session (cookie) sur ton index.php..
Et quand le type entre index.php?page=admin tu check si la session est correcte.. C'est le meilleur moyen.. Je te laisse chercher dans la doc pour trouver $PHP_CESS_ID (ou un truc du genre lol chuis pas un expert de la doc)
cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005
16 déc. 2003 à 07:22
en utilisant la variable init c'est une faille. Mais le define n'est pas vraiment comme une variable ! donc c'est pas une faille
Utilisateur anonyme
16 déc. 2003 à 00:15
Je ne voudrais pas dire de bétises mais avec ta méthode, qu'est-ce qui pourra nous empêcher de faire admin.php?Init=True ???
Puisque ton test
if(INSITE != 'true') {
echo "Cette page ne peut pas etre vu comme ca !";
exit();
}
sera bon.
Dis moi si je me trompe
cs_JcDuss Messages postés 37 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 23 avril 2004
1 déc. 2003 à 17:48
Ok le init=true est pas terrible
mais je connaissais pas encore la fonction define.

Enfin en poussant quand meme mon idee un peu :), je trouve que
init=time() ou meme init=fonction(time())
c'est deja pas mal
cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005
30 nov. 2003 à 08:43
!!! merci :D
transfear Messages postés 58 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 29 septembre 2006
30 nov. 2003 à 04:55
mouais koko a raison... ce tips nécessite réellement une mise à jour... décidément, VIVE KOKO !!!
cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005
29 nov. 2003 à 08:55
oui il y a une faille !!!
il te suffit d'aller sur admin.php?Init=True et c'est bon !!!
tu peux vérifié si Init n'est pas une var superglobale dans $_GET, $_POST ou bien tu utilises des defines !

tu mets ceci en haut de toute les pages sauf index.php :

if(INSITE != 'true') {
echo "Cette page ne peut pas etre vu comme ca !";
exit();
}

et dans index.php tu mets :
define('INSITE','true');

et voila :)
Rejoignez-nous