Proteger des fichiers selon la session en cour

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Proteger des fichiers selon la session en cour

Re: Proteger des fichiers selon la session en cour

par AB » 14 avr. 2011, 23:18

Y'avait une erreur sur la dernière ligne (readfile("$img");) que j'ai corrigé par readfile("$adresse_fichier"); dans mon post :wink:

Re: Proteger des fichiers selon la session en cour

par lusc » 14 avr. 2011, 16:10

Merci beaucoup je teste sa et vois si sa marche

Re: Proteger des fichiers selon la session en cour

par AB » 14 avr. 2011, 15:06

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

par lusc » 14 avr. 2011, 12:55

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 :oops:

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

par lusc » 13 avr. 2011, 16:10

Merci pour vos reponses

Re: Proteger des fichiers selon la session en cour

par AB » 11 avr. 2011, 16:22

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

par lusc » 11 avr. 2011, 15:30

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

par macgawel » 11 avr. 2011, 12:54

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

par xTG » 11 avr. 2011, 12:53

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

par lusc » 11 avr. 2011, 12:12

J'ai du mal a comprendre, ou il faut placer ce script, dans quel page?

Re: Proteger des fichiers selon la session en cour

par macgawel » 11 avr. 2011, 11:50

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.

Proteger des fichiers selon la session en cour

par lusc » 11 avr. 2011, 11:30

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