Interaction entre php et Htaccess

Résolu
Chrisix Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   -  
 Longshot -
Bonjour,

Je cherche à sécuriser une partie de mon site qui contient à la fois des pages (php) et des images (JPG) et autres (DOX, XLS...)
Pour protéger correctement les fichiers je mets un .htaccess dans le répertoire et le tour est joué...
Mais si je veux pouvoir y accéder à partir d'une page PHP, est-il possible de donner le USER et PASSWORD à partir de PHP sans pour autant le mettre dans le lien (style http://user:password@monsite.fr/repertoir/fichier.doc) ce qui aurait pour effet de le rendre visible (IE le cacha mais Mozilla l'affiche en clair !)

J'ai tenté de définir $_SERVER['PHP_AUTH_USER']='user' et $_SERVER['PHP_AUTH_PW']='password' mais cela ne fonctionne pas !

Avez-vous une solution ?

(ps pour info, le site est sur free... donc le Htaccess est un peu particulier mais le principe devrait etre le même)


Merci
A voir également:

7 réponses

Longshot
 
Tester:
http://www.jalix.org/ressources/internet/php/_manual4/man-php4-fr/function.passthru.html
1
Chrisix Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   60
 
Hello ??? Quelqu'un pour m'aider ?
0
Chrisix Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   60
 
Please ! Help !
0
Enhide
 
Salut,

Je fais des recherche depuis des heures parce que j'aimerais faire la même chose que toi pour relier deux sites qui utilisent les même login et password.

Je ne sais pas si tu as des pistes mais moi je patauge. Ce que je te propose, c'est que tu me tiennes au courant si tu trouves et je fais de même.

Merci et à bientôt j'espère... avec une solution.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Chrisix Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   60
 
Hello... voilà où j'en suis :
C'est un faux pb car en fait l'identification type HTaccess est gérée coté client par IE/Mozilla
A chaque page appelée, c'est la client qui ajoute à l'url l'utilisateur+mot de passe codé en MD5
Deux possibilités :
soit mettre le login dans le lien du genre http://user:pasword@www.site.fr mais le pb c'est que l'utilisateur peut le voir, avec mozilla il est même en clair dans la bara d'adresse....
deuxieme option, plus compliquée mais qui marche (elle !) c'est d'avoir un lien sur le premier site vers une page PHP qui ne contient rien... si ce n'est le code pour aller chercher le page du site 2 avec un "FsockOpen"
Quand tu appelles www.site1.fr/page.php le code va chercher les données de la page www.site2.fr/page.htm et renvoie au client. Le principe devrait bien marcher mais je ne l'ai pas encore mis en oeuvre....
J'ai vu qu'avec FsockOpen php peut passer l'adresse avec l'identifiant et l'utilisateur ne peut rien y voir....
Ca devrait parcher aussi pour aller cherche un pdf ou autre... à travers une page php.

Si tu arrives à quelque chose avec ça, merci de me donner le code (ça serait bien bête qu'on cherche tous les deux la même chose !)
Faut chercher coté "proxy" ou "cross scripting" avec ton google préféré....

Merci de me tenir au courant
0
Chrisix Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   60
 
Voila.... je suis arrivé au bout (enfin !)

fichier proxy.php placé sur //site1.free.fr
<?php
$fp = fsockopen("site2.free.fr", 80, $errno, $errstr, 30);
if (!$fp) {
	echo "$errstr ($errno)<br />\n";
} else {
	$data = "";
	$base64 = base64_encode("user:password");
	fputs($fp, "GET http://site2.free.fr/index.php HTTP/1.0\r\nAuthorization: Basic ".$base64."\r\n\r\n");
	while (!feof($fp) && fgets($fp, 128)!="\r\n") { };
	while (!feof($fp)) {$data.= fgets($fp, 128);}
	echo $data;
	fclose($fp);
}
?>

La page du site2 est retournée... mais attention, si elle faisait référence à des images sur site2, celles-ci ne seront pas accessibles !
Ca marche avec Free... mais je peux pas garantir le résultat ailleurs !
0
Chrisix Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   60
 
Rho... pourquoi chercher simple quand on peut faire compliqué !

<?php
$fp = fopen("http://user:password@site2.free.fr/index.php" , "r");
if (!$fp) die("<h2>erreur</h2>");
while (!feof($fp) && fgets($fp, 128)!="\r\n") {};
while (!feof($fp)) echo fgets($fp, 4096);
fclose($fp);
?>

Ca marche tout aussi bien !
0