8723 sujets

Développement web côté serveur, CMS

Bonjour à tous
Dans un site A il y a
<a href="adresse sur site B">cliquer ici</a>

Quand un utilisateur du site A clique sur le lien, cela lance le script "monscript.php" sur le site B.

Ma question :
est-il possible de savoir dans "monscript.php" que l'appel se fait par l'intermédiaire d'un lien sur site A et non pas d'un autre site, ou par appel direct de l'url dans la barre de navigation de l'utilisateur ?
Merci pour votre aide
Modifié par PapyJP (13 Jan 2024 - 15:54)
Mon objectif est de tester qu'on est bien passé par le lien sur le site A pour accéder cette page du site B, c'est à dire un moyen détourné de donner des droits d'accès aux utilisateurs qui peuvent accéder à la partie privée du site A.
J'ai écrit :

$REFERER = $_SERVER['HTTP_REFERER'];
$HOST = parse_url($REFERER, PHP_URL_HOST);
if($HOST != 'adresse site A') die("L'accès à cette page est réservé à ...");

Ayant moi-même plus ou moins la main sur les deux sites, je ne crois pas avoir trop de risque d'avoir ce problème.
Si quelqu'un autorisé à accéder à cette page reçoit le message d'alerte ci-dessus, je pense qu'il me le signalera.
Après tu peut gérer cela en JAVASCRIPT si tu veux avec les localstorages

EDIT : j'ai relu ta dernière réponse, localstorage n'est pas du tout sécure pour ce que tu souhaite faire.
Modifié par JENCAL (16 Jan 2024 - 11:56)
PapyJP a écrit :
Mon objectif est de tester qu'on est bien passé par le lien sur le site A pour accéder cette page du site B, c'est à dire un moyen détourné de donner des droits d'accès aux utilisateurs qui peuvent accéder à la partie privée du site A.
J'ai écrit :

$REFERER = $_SERVER['HTTP_REFERER'];
$HOST = parse_url($REFERER, PHP_URL_HOST);
if($HOST != 'adresse site A') die("L'accès à cette page est réservé à ...");

Ayant moi-même plus ou moins la main sur les deux sites, je ne crois pas avoir trop de risque d'avoir ce problème.
Si quelqu'un autorisé à accéder à cette page reçoit le message d'alerte ci-dessus, je pense qu'il me le signalera.


Sinon tu peux aussi passer un token api en POST avec des clé de cryptage identique sur site A et site B.

Parce qu'il me semble que le referrer on peut le modifier en javascript comme bon nous semble.

Si je suis malveillant je me fait un script qui envoit custom mon referrer et met ton site A pour taper dans ton site B et tu n'y vois que du feu.
Hello !

De mon point de vue c’est pas une bonne manière de sécuriser ta page. Je rejoins JENCAL dans le sens où tant que la requête peu être forgée (avec un outil comme Postman par exemple) c’est pas fiable. Tu pourrais t’inspirer de l’authentification par token JWT. Faut que ton site B délivre un token au site A après authentification, et le site A renvoie le token dans chaque requête. Jette y un coup d’œil Smiley smile
Je suis bien d'accord sur le côté "pis-aller" de ce que j'ai fait.

Il se trouve que le "site A" n'est en fait qu'un des multiples blogs hébergés par une société tierce. La raison pour laquelle je dois aller chercher une page HTML sur le site B plutôt que de la recopier dans le site A, ce qui serait la bonne solution, c'est tout simplement que l'hébergeur de blog ne permet pas de mettre des pages HTML, sans doute par crainte qu'ils contiennent je ne sais quel script qui mettrait leur petite affaire à mal.

Donc inutile de dire que le mécanisme de jetons que tu proposes n'est pas implémentable dans ces conditions. Si quelqu'un est intéressé à truander le système, ce toute façon, il n'affichera que des pages HTML qui contiennent des partitions de musique, ça ne va pas loin.