OVH Cloud OVH Cloud

Lien anonyme sur Script PHP authentifie

10 réponses
Avatar
Jean Francois Ortolo
Bonjour
Je peux faire un script PHP, qui affiche les données statistiques de
mon site, et théoriquement, mettre à jour automatiquement ce script PHP
d'une manière journalière.

Le problème, c'est que le site devant avoir un lien vers ce script
PHP, doit être le seul à pouvoir le faire, ce qui nécéssite une
authentification.

Evidemment, ce script PHP est capable d'effectuer des tests sur des
valeurs de paramètres, sans être vu de l'utilisateur. Mais le site ayant
un lien vers lui, aura donc des paramètres d'authentification dans ce
lien, qui seraient visibles dans le source de la page ou figure ce lien.

Le site ayant ce lien étant publiquement accessible, il n'est pas
possible d'utiliser un procédé du type .htaccess .htpasswd

Donc, comment faire en sorte de passer à ce script PHP des valeurs
d'authentification qu'il puisse interpréter, sans que celles-ci ne
soient visibles dans le lien à ce script ?

Merci beaucoup beaucoup de vos réponses.

Jean Francois Ortolo

--
Visitez mon Site entièrement gratuit
donnant des Statistiques et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com

10 réponses

Avatar
Eric
J'ai pas tout compris, là :(

Bonjour
Je peux faire un script PHP, qui affiche les données statistiques de
mon site, et théoriquement, mettre à jour automatiquement ce script PHP
d'une manière journalière.

Le problème, c'est que le site devant avoir un lien vers ce script
PHP, doit être le seul à pouvoir le faire, ce qui nécéssite une
authentification.


Si j'ai bien compris, ton script sera plus ou moins un compteur, et ce que
tu veux, c'est que seul ton site soit compté ?
Tu peux utiliser $_SERVER['HTTP_REFERER'], qui représente l'url du site d'où
provient le clic, ou est vide si la page a été chargée depuis un clic dans
un email, adresse tapée dans le navigateur ou par le bouton actualiser.
Ce n'est pas la perfection, mais sauf logiciel d'anonymat, tous les
navigateurs donnent l'info, et je même si c'est facile à faire, je ne vois
pas l'intérêt qu'aurait qqun à forcer volontairement ton script...

Evidemment, ce script PHP est capable d'effectuer des tests sur des
valeurs de paramètres, sans être vu de l'utilisateur. Mais le site ayant
un lien vers lui, aura donc des paramètres d'authentification dans ce
lien, qui seraient visibles dans le source de la page ou figure ce lien.


En fait, le lien serait
http://www.tonsite.com/stats.php?site=monsite&info1=blabla1&info2=blabla2,
c'est ça ?
Tu regardes le contenu de $_REQUEST['site'], et tu regardes si c'est
cohérent par rapport à $_SERVER['HTTP_REFERER']

Le site ayant ce lien étant publiquement accessible, il n'est pas
possible d'utiliser un procédé du type .htaccess .htpasswd


Donc, comment faire en sorte de passer à ce script PHP des valeurs
d'authentification qu'il puisse interpréter, sans que celles-ci ne
soient visibles dans le lien à ce script ?


Tu fais les stats de TON site ?
Si il est en PHP, pourquoi tu ne fais pas un truc du style

include('inclusions/stats.php');

ou inclusions serait un dossier protégé par .htaccess "deny from all"

Avatar
Jean Francois Ortolo
Eric wrote:

Si j'ai bien compris, ton script sera plus ou moins un compteur, et ce que
tu veux, c'est que seul ton site soit compté ?
Tu peux utiliser $_SERVER['HTTP_REFERER'], qui représente l'url du site d'où
provient le clic, ou est vide si la page a été chargée depuis un clic dans
un email, adresse tapée dans le navigateur ou par le bouton actualiser.
Ce n'est pas la perfection, mais sauf logiciel d'anonymat, tous les
navigateurs donnent l'info, et je même si c'est facile à faire, je ne vois
pas l'intérêt qu'aurait qqun à forcer volontairement ton script...



Bonjour Eric
Merci beaucoup pour ton indication, la variable
$_SERVER['HTTP_REFERER'] est exactement ce que je cherchais.

Mais, est-ce que cette variable est encore valable si le lien à mon
site, est dans une frame dans le site d'origine ?

Celà me permettrait d'incorporer ma page automatiquement à
l'intérieur d'une page du site qui veut avoir un lien vers le mien.

Ce problème est vital pour moi, car le webmestre du site demandeur,
désire très certainement avoir l'exclusivité de mes statistiques de
courses de chevaux, et en échange il m'offre de me donner la permission
d'utiliser les données résultats des courses de chevaux de son site.
Celà me permettrait de mettre à jour ma base de données, qui en a bien
besoin.

Merci beaucoup de ta réponse.

Jean Francois Ortolo

--
Visitez mon Site entièrement gratuit
donnant des Statistiques et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com

Avatar
Eric
Bonjour Eric
Merci beaucoup pour ton indication, la variable
$_SERVER['HTTP_REFERER'] est exactement ce que je cherchais.

Mais, est-ce que cette variable est encore valable si le lien à mon
site, est dans une frame dans le site d'origine ?


Tu as l'adresse de la page à partir de laquelle est appelé ton script.
Dans le cas d'un clic => page où se situe le lien
Dans le cas d'une image => page qui contient l'image
Dans le cas d'une frame => page qui contient les framesets

Celà me permettrait d'incorporer ma page automatiquement à
l'intérieur d'une page du site qui veut avoir un lien vers le mien.

Ce problème est vital pour moi, car le webmestre du site demandeur,
désire très certainement avoir l'exclusivité de mes statistiques de
courses de chevaux, et en échange il m'offre de me donner la permission
d'utiliser les données résultats des courses de chevaux de son site.
Celà me permettrait de mettre à jour ma base de données, qui en a bien
besoin.


Autre solution, ce ne serait il pas possible d'utiliser un truc coté serveur
?
Le site demandeur interroge une page php de ton site depuis son serveur
(donc l'url ne serait pas publique), ton site retournerait les infos
formatées à l'aide d'espaces, tabulations, retours à la ligne,
antislashes... Que le site partenaire n'aurait plus qu'à 'décoder' et
afficher. En plus, comme tout se ferait coté serveur, se serait totalement
transparent pour le visiteur, et en plus vous pourriez l'un comme l'autre
faire des traitements sur les données, par exemple les insérer dans la base,
comparer par rapport à d'autres résultats, etc...
Si ma mémoire est bonne (et ça, c'est pas gagné lol) l'appel à une autre
page se gère comme un fichier, sauf qu'il faut mettre l'url à la place du
nom de fichier dans la commande d'ouverture du fichier.

Merci beaucoup de ta réponse.
de rien !


Bon courage pour ton site !

Avatar
Jean Francois Ortolo
Eric wrote:
Bonjour Eric
Merci beaucoup pour ton indication, la variable
$_SERVER['HTTP_REFERER'] est exactement ce que je cherchais.

Mais, est-ce que cette variable est encore valable si le lien à mon
site, est dans une frame dans le site d'origine ?



Tu as l'adresse de la page à partir de laquelle est appelé ton script.
Dans le cas d'un clic => page où se situe le lien
Dans le cas d'une image => page qui contient l'image
Dans le cas d'une frame => page qui contient les framesets


<...>


Bon courage pour ton site !


Génial
Merci beaucoup, tu m'as donné la solution complète de mon problème. :)

Merci encore.

Bien à toi.

Jean Francois Ortolo

--
Visitez mon Site entièrement gratuit
donnant des Statistiques et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com


Avatar
John Gallet
Re,

Le site ayant ce lien étant publiquement accessible, il n'est pas
possible d'utiliser un procédé du type .htaccess .htpasswd


Si, il suffit de mettre le script qui met à jour les stats dans un sous
répertoire et de le protéger. Mais de toutes façons, ça n'empêche pas
qu'il faille dans le script appelant déclarer les logins/pass du
htpasswd.

Maintenant vu la probabilité qu'on intercepte lesdits identifiants par
rapport à ce qu'ils protègent (le lancement d'un script de msie à jour
de stats...) il n'y a pas de faille de sécurité à proprement parler, que
ce soit par htaccess/passwd ou par maj_stat.php?login=....&passwd=.....

De plus, il est toujours possible d'appeler maj_stats.php en ssl, le
seul "risque" réside alors dans le piratage du compte de la machine
distante qui demande.

Quand au referer, il est simplissime de le simuler, et il ne doit pas
être utilisé seul dans l'absolu. Mas là de nouveau, vu le peu
d'importance (qu'est-ce que ça peut faire que les ststas soient mises à
jour 3 fois dans la journée ?), il peut suffire.

a++
JG

Avatar
Jean Francois Ortolo
Bonjour Monsieur
Je vous prie de m'excuser d'avoir mis tout ce temps pour répondre,
car votre réponse m'apporte, je pense, la résolution très complète de ma
problématique.

Voir mes questions ci-dessous.

Bien à vous.

Jean Francois Ortolo

John Gallet wrote:
Re,


Le site ayant ce lien étant publiquement accessible, il n'est pas
possible d'utiliser un procédé du type .htaccess .htpasswd



Si, il suffit de mettre le script qui met à jour les stats dans un sous
répertoire et de le protéger. Mais de toutes façons, ça n'empêche pas
qu'il faille dans le script appelant déclarer les logins/pass du
htpasswd.



Comment est-il possible de programmer un script PHP appelant mon
script de statistiques à partir du site "permis", utilisant un login et
un password, comme si l'utilisateur entrait le login/password au
clavier, mais sans qu'il soit besoin de le faire réellement, étant
entendu évidemment que ce login/password sont dans le script appelant ?

Je croyais que dans le cas de répertoires protégés avec .htaccess et
.htpasswd , il n'était possible d'y accéder que d'une manière interactive.



<...>


Quand au referer, il est simplissime de le simuler, et il ne doit pas
être utilisé seul dans l'absolu. Mas là de nouveau, vu le peu
d'importance (qu'est-ce que ça peut faire que les ststas soient mises à
jour 3 fois dans la journée ?), il peut suffire.



Bonjour Monsieur
Il y a d'une part le script PHP donnant les statistiques, qui doit
être protégé par login/password donc, et d'autre part l'ensemble de la
mise à jour de ce script PHP, qui est interne à mon site, et qui est
déclenchée automatiquement par cron en début d'après-midi.

Il est impossible à quelqu'un d'extérieur de mettre à jour le script
PHP donnant les statistiques, car il n'y a pas d'accès au Shell Bash sur
mon site de l'extérieur, et d'un autre côté, ce processus de mise à jour
est trop compliqué de par les différents scripts PHP qu'il met en jeu,
et leurs paramètres, pour qu'il soit possible de le simuler.

Le seul problème que j'ai besoin de résoudre, c'est comment accéder à
ce script PHP donnant les statistiques, et protégé par .htaccess et
.htpasswd, y accéder donc à partir d'un script PHP situé sur le site
permis, de façon à ce que celui-ci fournisse automatiquement, sans
intervention de l'utilisateur, le login et le password ?

Merci beaucoup à vous de votre réponse.

Jean Francois Ortolo

--
Visitez mon Site entièrement gratuit
donnant des Statistiques et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com


Avatar
John Gallet
Bonjour,

Je vous prie de m'excuser d'avoir mis tout ce temps pour répondre,
car votre réponse m'apporte, je pense, la résolution très complète de ma
problématique.


Il n'y a pas de mal, le seul risque était que je ne lise pas tous les
articles du forum et que donc les nouvelles questions passent à la
trappe.

Comment est-il possible de programmer un script PHP appelant mon
script de statistiques à partir du site "permis", utilisant un login et
un password, comme si l'utilisateur entrait le login/password au
clavier, mais sans qu'il soit besoin de le faire réellement, étant
entendu évidemment que ce login/password sont dans le script appelant ?
Je croyais que dans le cas de répertoires protégés avec .htaccess et
.htpasswd , il n'était possible d'y accéder que d'une manière interactive.


En pratique et pour faire court, si le login est 'toto' et que le mot de
passe est 'coincoin', il suffit d'appeler (dans un navigateur ça
marchera aussi) :

http://toto:/rep_protege/fic.php

Pour la petite histoire ceci a été lancé par un éditeur quelconque (je
ne sais plus si c'est microsoft ou netscape) dans le but de simplifier
la sécurité mais maintenant on en revient un peu car au contraire ça
amène des failles. Bref, c'est comme beaucoup de choses sur internet, ça
fait partie des standards de fait et non des normes.


Le seul problème que j'ai besoin de résoudre, c'est comment accéder à
ce script PHP donnant les statistiques, et protégé par .htaccess et
.htpasswd, y accéder donc à partir d'un script PHP situé sur le site
permis, de façon à ce que celui-ci fournisse automatiquement, sans
intervention de l'utilisateur, le login et le password ?


Si c'est un .htacess/.htpasswd en utilisant la syntaxe ci-dessus. A
noter que vous pourriez aussi faire passer en arguments
..script.php?login=toto&pass=coincoin et commencer script.php par les
lignes :

if($_REQUEST['login']!='toto' || $_REQUEST['pass']!='coincoin')
exit();

Sur le fond, c'est assez similaire. Si on lit la ligne de commande
d'appel du script, les logins/pass sont en clair. Si on capture le
trafic réseau, idem, sauf à utiliser https au lieu de http. Les deux
différences apportées par un .htacces sont que premièrement il n'est pas
nécessaire de refaire la vérification pour tous les scripts du
répertoire, et deuxièmement que le mot de passe est chiffré dans le
.htpasswd au lieu d'être lisible en clair dans le script. Vous pourriez
aussi bien sûr aller faire un SELECT COUNT(1) FROM matabledesusers WHERE
login=$_REQUEST['login'] AND pass=$_REQUEST['pass'] (nb : syntaxe sql
fantaisiste par paresse).


HTH

JG

Avatar
Thibaut Allender
En pratique et pour faire court, si le login est 'toto' et que le mot de
passe est 'coincoin', il suffit d'appeler (dans un navigateur ça
marchera aussi) :

http://toto:/rep_protege/fic.php


exact, sauf que ca ne fonctionne plus dans IE6 apres l'application d'un
patch de securité (lequel, faut pas me demander ;)

Pour la petite histoire ceci a été lancé par un éditeur quelconque (je
ne sais plus si c'est microsoft ou netscape) dans le but de simplifier
la sécurité mais maintenant on en revient un peu car au contraire ça
amène des failles. Bref, c'est comme beaucoup de choses sur internet, ça
fait partie des standards de fait et non des normes.


si c'est microsoft, c'est amusant, car c'est justement pour boucher ces
failles que cette syntaxe a ete supprimee

--
thibaut allender | freelance | web|system developer|designer
+32 496 26 75 76 | http://capsule.org *new version*

Avatar
Jean Francois Ortolo
John Gallet wrote:
Bonjour,

<...>



Comment est-il possible de programmer un script PHP appelant mon
script de statistiques à partir du site "permis", utilisant un login et
un password, comme si l'utilisateur entrait le login/password au
clavier, mais sans qu'il soit besoin de le faire réellement, étant
entendu évidemment que ce login/password sont dans le script appelant ?
Je croyais que dans le cas de répertoires protégés avec .htaccess et
.htpasswd , il n'était possible d'y accéder que d'une manière interactive.



En pratique et pour faire court, si le login est 'toto' et que le mot de
passe est 'coincoin', il suffit d'appeler (dans un navigateur ça
marchera aussi) :

http://toto:/rep_protege/fic.php



Bonjour Monsieur
Le problème reste donc toujours le même, c'est-à-dire que le
login/password sont lisibles à partir de la source HTML donnée par le
script PHP appelant. Dans ce cas, il suffit à n'importe qui de lire le
source de la page ou est inclus le script appelant, et hop, il a le
login/password ?


- Mais comme autre moyen de fournir des données d'identification, ne
pourrait-il pas y avoir une simulation de passage de données
d'authentification en POST, de manière à ce que les données ne soient
pas visibles du tout, et qu'il n'y ait aucune visualisation aucune ?

Celà peut probablement se faire de manière programmative en PHP, mais
je ne sais pas comment. Pourriez-vous me l'indiquer ?


- Ou bien simplement le script PHP appelant pourrait contenir les
valeurs des variables d'authentification, puis faire un require sur mon
script affichant les statistiques, qui lirait les valeurs de ces
variables, et vérifierait que les valeurs sont correctes ?

Mais est-ce qu'un require sur un script situé sur un site extérieur
est possible ?

Merci beaucoup beaucoup de votre réponse.

Jean Francois Ortolo

--
Visitez mon Site entièrement gratuit
donnant des Statistiques et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com


Avatar
John Gallet
Re,

Le problème reste donc toujours le même, c'est-à-dire que le
login/password sont lisibles à partir de la source HTML donnée par le
script PHP appelant.


De ce côté là, vous pouvez le tourner comme vous voulez : il faudra bien
que vous écriviez lesdits login+pass quelque part à l'émission dès lors
que vous voulez les vérifier en réception.

Dans ce cas, il suffit à n'importe qui de lire le
source de la page ou est inclus le script appelant, et hop, il a le
login/password ?


Si c'est du html, oui. Si c'est du php, non. Vous trouverez dans la faq
de ce forum (http://faqfclphp.free.fr/) un paragraphe sur la protection
des mots de passe de connexion SGBD, problématique tout à fait
similaire.

Rappelons aussi qu'en ligne de commande (php cli) il n'y a aucun transit
http, même un personne ayant réussit à mettre la carte réseau locale en
mode promiscuous (et qui donc est probablement déjà passée root de
toutes façons...) ne verra rien. Le script php en question peut donc
être dans un répertoire innaccessible au daemon http (apache ou like).


- Mais comme autre moyen de fournir des données d'identification, ne
pourrait-il pas y avoir une simulation de passage de données
d'authentification en POST, de manière à ce que les données ne soient
pas visibles du tout, et qu'il n'y ait aucune visualisation aucune ?


En ligne de commande, oui.

Celà peut probablement se faire de manière programmative en PHP, mais
je ne sais pas comment. Pourriez-vous me l'indiquer ?
Selon ce que je lis dans l'autre partie du thread, vous avez trouvé. Me

contacter en direct si nécessaire.

- Ou bien simplement le script PHP appelant pourrait contenir les
valeurs des variables d'authentification, puis faire un require sur mon
script affichant les statistiques, qui lirait les valeurs de ces
variables, et vérifierait que les valeurs sont correctes ?
Oui tout à fait.


Mais est-ce qu'un require sur un script situé sur un site extérieur
est possible ?


Oui mais il ne fera qu'appeler le script distant exactement comme wget,
il faudra passer les paramètres, il n'y a pas de transmission "magique"
de varaiables entre les deux machines. NB : ne pas confondre avec la
méthode inverse, faille de sécurité, consistant à inclure un script
distant et à l'exécuter en local.

a++
JG