neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008
-
14 sept. 2006 à 13:18
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008
-
15 sept. 2006 à 10:55
Bonjour tout le monde,
Je souhaitai récemment proteger l'accès a un fichier zip sur mon site perso pour le restreindre à seulement quelques personnes de mon entourage. J'ai donc fouillé un peu et je suis tombé sur la gestion des droits avec apache: les fichier .htaccess... J'ai mis en place cette solution et ça marche du tonère.
Mais maintenant j'ai un second problème: ayant sécursé également certaines pages, je souhaiterai pouvoir récupérer en php le login de l'utilisateur pour afficher des informations plus ciblées (normal quoi !). Je n'ai pas trouvé de moyen pour le faire, et j'ai cru comprendre que apache/php on pouvait pas trop mélanger (mais je fait peut-être fausse route !). J'ai déjà réussi a sécuriser des pages web en php avec les sessions, mais je ne sais pas le faire pour les fichiers, car n'importe qui peut entrer l'url directement si il la connait et le téléchargement lui sera proposé. Est-il possible d'interdire l'accès a un fichier si l'utilisateur n'est pas reconnu ?
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 14 sept. 2006 à 23:22
dans ce cas tu peux mettre tout les fichiers dans un dossier protègé (où il y a "image.gif" et d'autre truc) et tu crée une page php qui ouvre ces fichiers,
par exemple:
tu crée acces.php que tu accède par "acces.php?fichier=image.gif"
et dans la page acces.php tu fais un script genre
<?php
là tu mais ton script d'identification
puis un truc genre:
header("Content-type: image/gif");
readfile("dossierprotege/"+@$_GET["fichier"]);
exit();
?>
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 15 sept. 2006 à 10:15
Le principe de la technique est utilisé souvent (certains site on qu'une page d'index et utilise index.php?page=accueil)
Attention pour la sécurité, le mieux est de faire la liste des fichiers auxquels tu autorise l'accès et d'afficher une erreur si le fichier demandé n'est pas dans ta liste.
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 14 sept. 2006 à 13:57
Pour les fichiers php tu peux utiliser ça en début de fichier
<?php
if (@$_SERVER["PHP_AUTH_USER"] != "pseudo" || @$_SERVER["PHP_AUTH_PW"] != "motdepasse") {
header("WWW-Authenticate: Basic realm="Authentification"");
header("HTTP/1.0 401 Unauthorized");
echo "Vous n'êtes pas autoriser à accéder à cette page.";
exit();
}
?>
Et je sais que sur un serveur free tu peux mettre ça:
ce qui te protège un dossier, avec ça il suffit de se loguer soit sur la page php soit en essayant d'accèder au dossier pour être loguer partout, pour protèger que certains fichier il faut utiliser:
<Files "tonfichier.ext">
require valid-user
</Files>
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 14 sept. 2006 à 14:04
Euh encore un précision;
la ligne:
PerlSetVar AuthFile perso/.htpasswd
est comme cela car dans mon exemple le fichier protège .htpasswd était dans le fichier perso, normalement il faut mettre le chemin complet (qu'on peut trouver par exemple avec un realpath (c'est commande php) et qui donne souvent un truc genre /home/utilisateur/www/dossier/.htpasswd
Vous n’avez pas trouvé la réponse que vous recherchez ?
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 14 sept. 2006 à 22:57
Merci pour ta réponse Kysic, mais mon problème est que je ne veut pas avoir a se loguer pour les fichier puis se loguer pour les pages en php... j'aurai voulu une seule authentification qui puisse donner accès aux fichiers et qui puisse être réutilisée par php pour afficher par exemple les informations de l'utilisateur.
Pour ce qui est du .htaccess je l'ai déjà fait et ça marche très bien même. Mais je ne sais pas lorsque le code php est exécuté qui est logé car ces informations semblent être détenues par apache.
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 15 sept. 2006 à 10:02
Merci pour ta réponse, ça me semble pas mal comme solution. Est-ce quelque chose qui se pratique souvent ou c'est un bricolage ? Est-ce assez sécurisé ?