Rendre une page accessible par seulement une seule adresse.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Rendre une page accessible par seulement une seule adresse.

par Vikchill » 23 août 2007, 15:39

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

par zeus » 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 ;)

par Vikchill » 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?

par zeus » 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 ;)

par Sékiltoyai » 23 août 2007, 12:08

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

par santaclos » 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 ^^.

par Umkharss » 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.

par Sékiltoyai » 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).

par Umkharss » 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

par dunbar » 22 août 2007, 18:34

$HTTP_SESSIONS_VARS est déprécié. A remplacer par $_SESSION
Oups :oops:

par zeus » 22 août 2007, 18:31

$HTTP_SESSIONS_VARS est déprécié. A remplacer par $_SESSION

par dunbar » 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:

par Invité » 22 août 2007, 17:58

J'ai bien procédé comme ca mais ca ne marche pas.
Il n'y a pas quelque chose de plus simple pour que right2.php n'accepte que les connexions venant de right.php ?

par dunbar » 22 août 2007, 17:42

(je reprend ce que j'ai écrit plus haut)

En fait un page nommée "participer.php" contient un scrit rentabiliweb où on rentre un code puis renvoie sur right.php.Là la page envoie une requête au site de rentabiliweb pour voir si le code existe dans leur bdd.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.Le problème c'est qu'uon peut accéder à right2.php depuis l'éxterieur sans passer par le code et donc sans payer.
Bin normalement et sauf avis contraire
$_SESSION['RentaSess']
Ceci devrais fonctionner je pense mais il doit y avoir un session start dans toute tes pages :!:
si je ne me trompe pas
Et surtout le session_start() avant tout autres codes

par Invité » 22 août 2007, 17:37

(je reprend ce que j'ai écrit plus haut)

En fait un page nommée "participer.php" contient un scrit rentabiliweb où on rentre un code puis renvoie sur right.php.Là la page envoie une requête au site de rentabiliweb pour voir si le code existe dans leur bdd.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.Le problème c'est qu'uon peut accéder à right2.php depuis l'éxterieur sans passer par le code et donc sans payer.