Rendre une page accessible par seulement une seule adresse.

ViPHP
ViPHP | 2291 Messages

22 août 2007, 18:26

Si le code est bon on est redirigé sur right2.php (la page à protéger de l'extérieur) si il est faux on est redirigé sur wrong.php.
Est-ce que je peux récuperer la session créer dans right.php pour protéger right2.php?
Ton code :
if($tabrep[0] == "OUI")  
{ 
    $HTTP_SESSION_VARS["RentaSess"]    = false;  
    header("Location: http://site.com/wrong.php");  
    exit(0);  
}  
Pourquoi ne pas essayé comme ceci
session_start(); 
if (!isset($HTTP_SESSION_VARS["RentaSess"])) { 

header ('Location: right.php' ); 
    exit(); 

}
Essaye tu ne risque rien :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 août 2007, 18:31

$HTTP_SESSIONS_VARS est déprécié. A remplacer par $_SESSION
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 2291 Messages

22 août 2007, 18:34

$HTTP_SESSIONS_VARS est déprécié. A remplacer par $_SESSION
Oups :oops:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Umkharss
Invité n'ayant pas de compte PHPfrance

22 août 2007, 22:47

Bon finalement j'ai résolu ca trés simplement.
J'ai fait un .htaccess interdisant tous les fichiers php4 d'être vu sans passer par le site:

Code : Tout sélectionner

SetEnvIfNoCase Referer "^http://www.site.com/" ok=1 SetEnvIfNoCase Referer "^http://www.site.com/" ok=1 # adapter les extensions concernées ci-dessous <FilesMatch ".php4)"> Order Allow,Deny Allow from env=ok </FilesMatch>
J'ai ensuite renommé mon fichier "right2.php4" au lieu de .php,c'est de fait le seul fichier interdit depuis un accés externe :o

ViPHP
ViPHP | 5924 Messages

22 août 2007, 22:53

Le referer se change très facilement (il y a l'option de base dans Firefox et je pense en widget sous Opera).

Umkharss
Invité n'ayant pas de compte PHPfrance

22 août 2007, 22:55

Je sais mais c'est déjà une bonne protection contre le pékin moyen,aprés je vais voir si je trouve rien de mieux en antileech.

Eléphanteau du PHP | 26 Messages

23 août 2007, 09:43

moi jutilise ca pour mon site et ca fonctionne tres bien tu dois avoir un soucis
if(!isset($_COOKIE["ID_UTILISATEUR"]))
{
     header("Location: main.php");
}
sinon tu peux toujours mettre ca, mais il peut etre contourné en cliquant sur le bouton "arreter le c hargement":
<? if(isset($_COOKIE["ID_UTILISATEUR"])) { ?>
<p>
	<center><b><font color=#FF0000>Redirection en cours...</font></b></center>
	<META HTTP-EQUIV="Refresh" CONTENT="1;URL='main.php'">
</p>
le CONTENT="1" c'est le nombre de secondes avant la redirection essais de le mettre a 0.1 seconde ^^.

ViPHP
ViPHP | 5924 Messages

23 août 2007, 12:08

C'est bien joli mais le cookie se modifie plus facilement encore que le referer.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 août 2007, 12:38

Le mieux, c'est une session avec un principe de clé temporaire.

Quand le visiteur passe dans la page p1, tu stockes en session le timestamp de l'affichage en session
Quand le visiteur passe dans la page p2, tu vérifie qu'il est passé dans la page p1 il y a moins de x secondes et tu supprimes cette référence.

Du coup :
- tu vérifie que tu es passé dans la page p1 avant la page p2
- tu mets en place une temporisation (s'il oubli son PC et qu'il revient 2h après, c'est pas génial qu'il puisse quand même accéder à la page p2)
- tu empêche le rafraichissement de la page p2. S'il passe de la page p1 à p2 puis fait F5, le second affichage de la page p2 ne sera pas valide ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 193 Messages

23 août 2007, 15:24

Petite question: pourquoi ne pas laisser le serveur et/ou php gérer les timeout de connexion et de session?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 août 2007, 15:34

Parce que tu peux avoir envie que le timeout d'accès à la seconde page soit différent du timeout de la connexion et/ou du timeout de la session ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 193 Messages

23 août 2007, 15:39

Effectivement, je manque d'imagination :mrgreen: "Votre accès à page2.php s'autodétruira dans 5s" :P