Page 1 sur 1
Proteger des fichiers selon la session en cour
Posté : 11 avr. 2011, 11:30
par lusc
Bonjour, j'aimerai savoir si il m'était possible de proteger mes fichiers (pour que, le fichier ne soit pas disponible si l'utilisateur entre le lien absolu du fichier) en fonction de la session php en cour.
Par exemple : si la session est strictement égale à nom_de_la_session alors l'accée au dossier et au fichier du dossier est autorisé sinon marquer 'error'.
Voila si quelqu'un à une idée ou solution qui pourrais m'aider je lui en serait entierement reconnaissant
Merci
Re: Proteger des fichiers selon la session en cour
Posté : 11 avr. 2011, 11:50
par macgawel
Bonjour.
Pour vérifier si le script est accédé directement, à mettre au début du script à "protéger" :
if (realpath($_SERVER["SCRIPT_FILENAME"]) == __FILE__) {
die ('erreur');
}
__FILE__ => Le chemin complet et le nom du fichier courant. Si utilisé pour une inclusion, le nom du fichier inclus est retourné.
realpath($_SERVER["SCRIPT_FILENAME"] => Le chemin absolu vers le fichier contenant le script en cours d'exécution (celui qui fait le include(), si include).
Du coup, si tu appelles un script via une autre page, les deux diffèrent. Si tu appelles directement le script, les deux sopnt égaux => sortie.
Re: Proteger des fichiers selon la session en cour
Posté : 11 avr. 2011, 12:12
par lusc
J'ai du mal a comprendre, ou il faut placer ce script, dans quel page?
Re: Proteger des fichiers selon la session en cour
Posté : 11 avr. 2011, 12:53
par xTG
C'est un script PHP que tu veux protéger ou bien des fichiers autres (images, zip, ect) ?
Re: Proteger des fichiers selon la session en cour
Posté : 11 avr. 2011, 12:54
par macgawel
Ben au début de la page à protéger...
Attention, tel qu'il est il bloque l'accès à tout le monde, il faut rajouter un test sur la session (si c'est ce que tu veux utiliser).
Sinon, il y a une solution efficace :
htaccess.
Re: Proteger des fichiers selon la session en cour
Posté : 11 avr. 2011, 15:30
par lusc
Les fichiers à protéger sont dans des formats divers (pas seulement des scripts php) et le htaccess ne me convient pas vraiment au niveau du visuel et je n'ai rien trouver qui permet de modifier le visuel sur le web.
:::J'aimerai en fait faire comme un htaccess mais au lieu d'accéder au dossier si le mot de passe est bon je veut qu'il y accede si la session est bonne:::
ps:Pour la protection d'une page php selon session j'avais déja fais un script.
Merci
Re: Proteger des fichiers selon la session en cour
Posté : 11 avr. 2011, 16:22
par AB
Alors il faut mettre tes fichiers (à protéger) dans un répertoire protégé par un .htaccess avec la mention :
deny from all
Ensuite tu pourras faire lire (ou télécharger) ces fichiers par php si la session est bonne.
Re: Proteger des fichiers selon la session en cour
Posté : 13 avr. 2011, 16:10
par lusc
Merci pour vos reponses
Re: Proteger des fichiers selon la session en cour
Posté : 14 avr. 2011, 12:55
par lusc
Je suis désoler de ne pas en avoir fini avec ce sujet ^^ mais j'aimerai maintenant (sachant que je suis vraiment nul en language htaccess :/) connaitre les codes à faire à la maniere dont AB a dit . j'ai essayé sa methode mais je ne vois pas du tous quoi mettre à part deny from all dans mon htaccess
Donc moi je veut juste (pour le rappeler) autorisé l'accée a des fichiers sauf si une session est active.
Il faudrai traduire <?php if ($_SESSION['admin'] == "ma_session") ?> mais en language htaccess.
Merci
Re: Proteger des fichiers selon la session en cour
Posté : 14 avr. 2011, 15:06
par AB
Tu n'as rien d'autre à mettre dans ton .htaccess que : deny from all.
Aucun lien ne pourra lire directement un fichier dans ce dossier.
Par contre php pourra y avoir accès, donc il faut lire les fichiers avec php et c'est dans ta page php que tu mets ta condition <?php if ($_SESSION['admin'] == "ma_session") ?>
Par exemple :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<div>
<img src="read_img.php?img=photo1.jpg" />
<img src="read_img.php?img=photo2.jpg" />
</div>
</body>
</html>
Le script ci-dessus fait donc appel à la page "read_img.php" pour afficher les images.
Contenu de read_img.php :
<?php
if ($_SESSION['admin'] == "ma_session")
{
$img = isset($_GET['img'])? $_GET['img'] :'';
$dossier_protege = 'mon_repertoire_protege/';
$adresse_fichier = $dossier_protege.$img;
$adresse_fichier = strpos($adresse_fichier,'./') !== false ? $adresse_fichier :''; // pour éviter la navigation entre les répertoires
if(is_file($adresse_fichier)) // vérifie que le fichier existe
{
header("Content-Type: image/jpeg");
readfile("$adresse_fichier");
}
}
?>
Re: Proteger des fichiers selon la session en cour
Posté : 14 avr. 2011, 16:10
par lusc
Merci beaucoup je teste sa et vois si sa marche
Re: Proteger des fichiers selon la session en cour
Posté : 14 avr. 2011, 23:18
par AB
Y'avait une erreur sur la dernière ligne (readfile("$img");) que j'ai corrigé par readfile("$adresse_fichier"); dans mon post
