Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2007, 10h45   #1
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
Par défaut [Sécurité] Protéger des documents en téléchargement

Bonjour à tous,

Je souhaite connaitre la meilleure méthode pour protéger des documents qui sont disponibles en téléchargement, dans un espace sécurisé.

Pour être plus précis, lorsque je suis loggué dans mon espace, je peux télécharger mes docs. Jusqu'ici, pas de problème.

Maintenant, si je copie l'url d'accès à un de mes documents, que je me déloggue, et que je colle l'url dans la barre d'adresse de mon navigateur, j'ai toujours accès à mon doc.
Comment faire pour bloquer cet accès lorsque l'on n'est pas loggué ?

Merci pour votre aide.
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 11h15   #2
Membre expérimenté
 
Étudiant
Inscription : juillet 2004
Messages : 777
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 777
Points : 527
Points : 527
Il faut utiliser une page php pour telecharger et mettre un .htaccess dans le dossier ou tu a tes fichiers...
Regarde ici j'en ai deja parlé:
http://www.developpez.net/forums/sho...d.php?t=339984
cerede2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 11h29   #3
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
Ok, merci. Je vais jeter un oeil.

Bon, je comprends le principe mais je ne vois pas comment le mettre en place.

Dans mon espace sécurisé, j'ai des liens vers des pdf, qui permettent de lancer le téléchargement.

1°) Pour le .htAccess :

Est ce que cela suffit ?
Code :
1
2
3
4
5
6
7
8
9
10
11
 
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName AccesRestreint
AuthType Basic
 
<limit GET POST>
order deny,allow
deny from all
allow from localhost
</Limit>
2°) Dois-je créer une page php pour chaque fichier à télécharger ?
Comment intégrer cette page php dans mon code ?
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 14h08   #4
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
J'ai créé et mis en place mon fichier htaccess (avc le fichier htpasswd). Le répertoire est bien protégé.

Par contre, je galère côté PHP, depuis mon espace sécurisé pour télécharger les fichiers pdf en question. Si je clique sur un des liens, j'ai bien la fenêtre d'authentification qui apparait, due au fichier Htaccess.

Mais j'aimerais qu'elle n'apparaisse pas afin d'avoir accès directement à mon fichier, étant déjà logué dans mon espace sécurisé via php.
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 16h27   #5
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 34
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mars 2007
Messages : 34
Points : 27
Points : 27
Salut,

Rassure toi, tu ne vas pas être obligé de créer un fichier PHP pour chaque ressource que tu souhaites mettre à disposition en téléchargement...

Il faut d'abord créer une page PHP qui va forcer le téléchargement de la ressource.

Personnellement, je n'ai qu'un seul fichier à télécharger donc je précise le chemin comlet de ma ressource dans la viariable $url.

Dans ton cas, pour éviter d'avoir un fichier PHP par ressource, tu peux gérer dynamiquement la variable $url grâce à la méthode GET. Lorsque tu créeras ton lien vers la ressource dans ton site, il ressemblera à ca : "www.tonsite.com/page.php?chemin=chemin_vers_le_fichier". Tu n'auras alors plus qu'à récupérer la valeur de ce chemin dans ton fichier PHP.

Dans cet exemple, on suppose que la variable de session qui sert à vérifier que l'utilisateur est bien logué s'apelle $_SESSION["username"]
Je te donne le code complet tel que je l'utilise :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<?php
 
session_start();
 
if(!isset($_SESSION["username"]))
{
 
echo 'Vous devez être identifié pour accéder à cette ressource';
echo '<META HTTP-EQUIV="Refresh" CONTENT="3;URL=\'index.php\'">';
 
}
else
{
 
$url = $_GET["chemin"];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'. basename($url) .'";');
header('Content-Length: '. filesize($url));
@readfile($url) OR die();
 
}
 
?>
Voila, j'espère que je n'ai rien oublié....auquel cas, je complèterai ou rectifierai au plus vite !

@++
Geekix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 21h01   #6
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
Salut Geekix,
Merci pour ton aide.
J'ai avancé sur le sujet et ça fonctionne.

Par contre, un nouveau problème est apparu : je propose en téléchargement uniquement des fichiers pdf. Lorsque je clique sur un lien, une fenêtre s'ouvre et me propose soit d'enregistrer le fichier, soit de l'ouvrir dans le navigateur.
Jusque là, rien d'anormal.

Que je choisisse l'une ou l'autre des solutions, le fichier pdf ne s'ouvre pas, un message d'erreur d'adobe s'affiche, me signalant que le fichier n'est pas pris en charge ou qu'il est endommagé !

J'ai essayé de modifier les options de mes headers mais rien n'y fait.
Je me demande si le problème ne vient pas de mon fichier .htaccess que j'ai créé dans le répertoire où se trouvent les fichiers pdf.

Le voici :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName AccesRestreint
AuthType Basic
 
<limit GET POST>
order deny,allow
deny from all
allow from localhost
</Limit>

Quelle est la structure de ton fichier .htaccess ?
Si tu peux m'éclairer, ce serait sympa. Merci
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h09   #7
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
Apparemment, après quelques tests, je m'aperçois que le problème vient bien du htaccess car en le désactivant, tout fonctionne.

Malheureusement, en agissant de cette manière, mon but n'est pas atteint, à savoir la protection de mes fichiers pdf, lorsque l'utilisateur potentiel n'est pas logué dans mon espace sécurisé...

Si qqun a une idée pour me sortir de ce casse-tête, je suis à l'écoute
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h48   #8
Membre confirmé
 
Inscription : juin 2005
Messages : 171
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juin 2005
Messages : 171
Points : 214
Points : 214
Bonjour,

Et si tu changes le :
Code :
1
2
 
header('Content-Type: application/octet-stream');
en:
Code :
1
2
 
header('Content-Type: application/pdf');
?

Suis pas certains, mais ça coute rien d'essayer !
aurelman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h52   #9
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
salut,
oui, j'ai cru que c'était ça au début. Mais ça n'a rien changé

J'ai même joué sur le chmod du répertoire sans plus de succès...
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 12h07   #10
Membre confirmé
 
Inscription : juin 2005
Messages : 171
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juin 2005
Messages : 171
Points : 214
Points : 214
Peut être un problème de header, avec le systeme d'authenfication

Je ne connais pas bien PDF avec php. Mais s'il existe une fonction qui permet de stocker dans une chaine le contenu (binaire) du fichier PDF (un peu comme la librairie GD avec les images), tu pourrais avoir un truc du genre :

outputpdf.php
Code :
1
2
3
4
5
6
7
8
9
 
<?php
$id = $_GET['pdf_id'];
 
$content = read_pdf();
 
header('Content-type: application/pdf');
echo $content;
?>
Désolé, je ne te donne que des pistes, car je n'ai pas assez approfondie le domaine
aurelman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 12h45   #11
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
Je t'en prie. C'est déjà sympa de m'aider.

J'ai essayé de creuser ta proposition mais ça ne donne rien.

En fait, le système fonctionne mais si je choisis d'enregistrer un fichier pdf sur ma machine, lorsque je regarde les propriétés de celui-ci, son poids est de 0 Ko !

A priori, c'est uniquement "l'enveloppe" du fichier qui est téléchargée sur mon poste.
Apparemment, c'est ce f de fichier htaccess qui pose problème !!!

creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 16h10   #12
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 34
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mars 2007
Messages : 34
Points : 27
Points : 27
Mon .htaccess est simplissime et ne semble pas très différent du tiens :

Code :
1
2
3
4
 
order deny,allow
deny from all
allow from localhost
Je ne comprend pas pourquoi tu indiques "<limit GET POST>", ton problème vient peut être de la...Mais étant donné que c'est un message d'erreur d'adobe, je ne pense pas que le problème vienne du .htaccess

A ce niveau là, je suis comme toi, je pédale dans la semoule. Je n'utilise jamais de pdf donc je ne sais pas comment ca fonctionne au niveau d'une application web
Geekix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 16h26   #13
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
J'ai modifié mon htaccess en n'y mettant uniquement les 3 lignes que tu as postées. ça ne change rien.

J'ai essayé en supprimant le htaccess, et là ça fonctionne, j'arrive à télécharger mes docs....sauf que le répertoire n'est plus protégé si l'on tape directement l'URL d'un doc pdf.

C'est une histoire de dingue. Apparemment, il faut s'y prendre autrement pour protéger des documents à télécharger mais comment ??? je cherche encore....
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 16h32   #14
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 34
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mars 2007
Messages : 34
Points : 27
Points : 27
Personnellement, les fichiers que j'ai à télécharger sont des .rar et ca fonctionne très bien !

Mais ton cas est plus spécifique puisqu'il s'agit de pdf. Quand tu dis que ca ne fonctionne pas, tu fais référence au message d'erreur d'adobe?

Si vraiment tu ne trouves pas de solution, essaye de compresser tes pdf en .rar et regarde si ca marche
Geekix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 16h42   #15
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
oui, c'est bien ça. Si je choisis l'enregistrement, le fichier est bien téléchargé sur ma machine mais il fait 0 Ko !!!
Il y a a priori un problème de flux de données comme si le htaccess bloquait l'envoi de données depuis le serveur. C'est pour cela, que j'ai modifié le chmod du répertoire dans lequel se trouvent les fichiers pdf, mais en vain.

Je vais essayer de compresser pour voir ce que ça donne.

Je te tiens au courant.
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 16h50   #16
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
Bon, je viens d'essayer et j'obtiens la même chose
Le fichier est bien détecté mais le téléchargement ne fonctionne pas. Je récupère toujours un fichier de 0 Ko !!!

D'où l'impossibilité de l'ouvrir.
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 14h00   #17
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
Bon, après avoir refait différents tests, je confirme que le problème vient bien du fichier .htaccess.

L'accès aux documents est bloqué d'où l'explication de la taille du fichier pdf qui fait 0 Ko.

Apparemment, l'authentification ne passe pas malgré le paramètrage que j'ai fait.

Si qqun a une idée pour résoudre ce problème, je suis preneur.
A moins que ce ne soit pas possible....

Merci de m'éclairer.
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 14h47   #18
Membre habitué
 
Inscription : août 2005
Messages : 152
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : août 2005
Messages : 152
Points : 126
Points : 126
pourquoi ne pas enregistrer les liens des fichiers dans une BD ?

le lien sur le fichier serait de la forme "/download.php?id=5"
et sur la page download.php, en plus de verifier l'existence de ce fichier, tu pourrais verifier si l'utilisateur est connecté (session , cookie...)
MadCat34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 15h00   #19
Membre à l'essai
 
Inscription : septembre 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 92
Points : 24
Points : 24
Les liens sont enregistrés dans une BD. Je les appelle avec une variable.

Citation:
le lien sur le fichier serait de la forme "/download.php?id=5"
Je ne comprends pas trop où tu veux en venir. Si je rentre l'id du lien; comment vais-je récupérer l'url du fichier ? Verra-t-on l'url du fichier s'afficher qq part ?

Merci
creatchy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 15h45   #20
Membre habitué
 
Inscription : août 2005
Messages : 152
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : août 2005
Messages : 152
Points : 126
Points : 126
le lien que le client serait de la forme que je tai donné...

Ton fichier download.php ferait une requete SQL pour recuperer l'URL reel du fichier..et tu download en changeant le header()..

donc le client ne verrais que http://blbabla/download.php?id=5 (l'id de ton fichier par ex)..a toi de verifier si l'utilisateur qui utilise ce lien est loggué..

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?php
if($_SESSION["logged"])
{
  // Là tu peux download
$url = $_GET["chemin"];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'. basename($url) .'";');
header('Content-Length: '. filesize($url));
}
else
  // Là tu peux pas...
?>
Je ne comprend pas ce qui te pose probleme ?
MadCat34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h53.


 
 
 
 
Partenaires

Hébergement Web