Aller au contenu

Un accès dirigé et obligatoire...


Limerick

Sujets conseillés

Bonjour à tous,

J'ai un site PHP "www.mondomaine.com" qui héberge un forum (www.mondomaine.com/forum/index.php).

Il existe un lien permettant d'accéder du site au forum.

Le site n'est accessible qu'après authentification via une page de login.

Ce que je souhaiterais, c'est qu'il ne soit possible d'accéder à une quelconque page du forum qu'après être passé par le site.

En revanche, après être passé par le site et s'être loggé au forum, l'utilisateur ne doit pas être gêné (le forum utilise les cookies permettant de reconnaître l'utilisateur).

En fait, je souhaiterais qu'on ne puisse même pas s'enregistrer sur le forum, si l'on a pas préalablement été invité sur le site.

C'est un peu compliqué, non ?

Je crois qu'il doit y avoir un moyen de faire ça avec un fichier .htaccess, mais je ne vois pas comment...

Merci pour votre aide,

Lim.

Lien vers le commentaire
Partager sur d’autres sites

J'ai trouvé ceci qui semble correspondre à ce que je cherche :

SetEnvIfNoCase Referer "^http://www.mywebsite.com/" local_ref=1

Order deny,allow

deny from all

allow from env=local_ref

Je peux effectivement accéder à mon forum (dont l'URL est www.mywebsite.com/forum/index.php) uniquement si je viens de mon site.

MAIS !!!

Si, par exemple, je me connecte au forum, j'obtiens une Erreur 403 au moment d'être redirigé (l'URL est alors www.mywebsite.com/forum/login.php?action=in)

Néanmoins, je peux vérifier que je suis quand même connecté au forum.

Il semble que ceci se produise dès qu'il y a .php? dans l'URL

Savez-vous comment faire pour être considéré comme venant toujours du même domaine (mywebsite.com), même avec des URL de ce type ?

Merci

Lim

Lien vers le commentaire
Partager sur d’autres sites

Bon, comme ma question n'a pas l'air d'inspirer grand monde et que j'ai un peu progressé dans mes recherches, je m'en vais la reformuler - je l'espère - plus explicitement.

Sur mon forum, j'ai une page de redirection automatique qui contient une ligne que j'appelle - abusivement peut-être - "Meta Refresh" de ce type :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="refresh" content="5;URL=http://www.monsite.com/forum/index.php" />

D'autre part, je souhaite ne pouvoir laisser accéder au forum que ceux qui proviennent de monsite.com

J'ai donc écrit le .htaccess suivant :

SetEnvIfNoCase Referer "^http://www.monsite.com/" local_ref=1
Order deny,allow
deny from all
allow from env=local_ref

Cela fonctionne bien, hormis que le Meta dont je parle plus haut n'est pas reconnu par le .htaccess, et donc, quand apparaît la page de redirection automatique, j'obtiens une Erreur 403.

Seulement, si je clique sur le lien pour ne pas attendre, tout se passe normalement.

J'en déduis donc que c'est la fonction Redirection Automatique du "Meta Refresh" qui n'est paas reconnue par le code écrit dans le .htaccess.

Ma question est donc la suivante : comment faire pour que le "Meta Refresh" soit lui aussi reconnu comme provenant d'une page de monsite.com ?

On pourrait penser à quelque chose du style :

SetEnvIfNoCase Referer "^http://www.monsite.com/" local_ref=1
SetEnvIfNoCase Referer "Meta Refresh" local_ref=1
Order deny,allow
deny from all
allow from env=local_ref

Bien sûr, ce n'est pas ça, mais c'est juste pour vous donner une idée de ce que je recherche.

Je ne connais pas la syntaxe de programmation en générale, et celle de .htaccess en particulier...

Si quelqu'un pouvait m'aider :)

Merci à vous

Lien vers le commentaire
Partager sur d’autres sites

Salut Limerick,

C'est simplement dû au fait que le Meta-Refresh ne transmet pas de référant... et que de ce fait tu tombes dans le cas "interdit".

Avec une règle de réécriture pour remplacer le contenu du .htaccess, tu devrais pouvoir t'en sortir, tout en permettant le cas où le référant n'est pas transmis (par exemple à cause d'un firewall, ou pour un moteur de recherche)

Donc, tu mettrais à la place de ton code:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.monsite.com/  [NC]
RewriteRule - [F]

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Dan,

Merci beaucoup pour ton coup de main. J'avoue que j'écume les lieux spécialisés en quête de solution et je commençais à désespérer d'en trouver une un jour.

Cependant, j'ai bien essayé la solution que tu proposes, malheureusement elle permet d'accéder au forum sans être obligé de passer par le site. Ce que je ne souhaite pas.

Alors j'ai essayé avec les 2 codes, l'actuel qui me pose des problèmes de Refresh et le tien, mais je retombe sur le problème évoqué de sa non reconnaissance.

Sur le forum de PunBB, on me conseille de passer plustôt par le header, d'autant que DAlbum permet l'implémentation d'un code empêchant le HotLinking.

Or d'après certains experts, il serait possible de modifier quelque peu ce code pour ne pas permettre à qui que ce soit d'arriver sur une quelconque page du forum sans être au préalable passé par le site. Et d'être donc arriver sur le forum en ayant cliqué sur le lien présent sur le site.

Je souhaiterais que ce lien soit l'unique porte d'accès au forum. Et comme il se trouve sur la page d'accueil du site, accessible par un login/password de groupe, j'arriverais donc à mes fins.

Ouf ! :blink: Tu me suis ? :blush:

Seulement je ne connais pas suffisemment le php pour modifier ce code dans le sens recherché. Tu crois que c'est possible ?

Modifié par Limerick
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...