Jump to content
sparh

Protéger les documents du téléchargement (via leur url)

Rate this topic

Recommended Posts

Bonjour,


sur mon site j'upload pas mal de documents.


Les documents sont placés dans un dossier par exemple : images/documents/fichier.pdf



J'aurai aimé que les documents ne soient lisible/téléchargeables que pour les utilisateurs connectés (via une session PHP) au site.


Le plus simple aurai été de bloquer l'accès à tel dossier si la session PHP n'existe pas mais ce n'est pas possible.



La seule solution que j'ai trouvé pour l'instant c'est :


dans le fichier htaccess : rediriger le dossier concerné (celui qui contient les documents à protéger) vers une page php qui vérifiera que la personne est connecté, si oui la page affiche le document :


- htaccess --> RewriteRule images/(.*) check_connect.php?url=$1 [QSA,L,R=301]


- check_connect.php -->



verif_connexion();

$url = $_GET['url'] ;
$adresse_fichier = 'images/'.$url ;

$mime = mime_content_type($adresse_fichier) ;

$fp = fopen($adresse_fichier, 'rb');
header("Content-Type: ".$mime);
header("Content-Length: " . filesize($adresse_fichier));
fpassthru($fp);
exit;

Que pensez vous de cette solution ?


Avez des idées d'amélioration ou carrément d'autres idées pour protéger mes documents ?


Merci d'avance


Share this post


Link to post
Share on other sites

Bonjour,


car je souhaite que TOUS ceux qui ont un login valable puissent accéder aux documents et non pas seulement le propriétaire.

Share this post


Link to post
Share on other sites

Il faut jouer avec les headers comme le montre l'exemple #1. Donc suffit de poser les conditions de départ (visiteur ou utilisateur?) puis si la condition est vraie alors on envoie le header correspondant.


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Jiizen
      Bonjour, 
       
      Je ne sais pas si je suis dans la bonne section car je suis un peu perdue. Mon mari a sa petite entreprise et je gère tout ce qui est devis, factures, clients, etc... Nous faisons tout en Excel : autant pour la gestion d'informations, les calculs, que pour générer les devis, les factures, etc... 
       
      Cela fonctionne très bien mais je me suis demandée si créer une application web personnelle ne permettrait pas de mieux centraliser le tout, modifier plus facilement les informations et de faire des recherches plus précises.
       
      Mais pour les documents, je me demande comment procéder... 
      Je sais que l'on peut générer des Excel à partir d'une librairie, comme PHPExcel, par exemple. Mais est-ce que ce serait vraiment intéressant de surcharger la base pour créer des fichiers à la volée à chaque fois... ? Je ne sais pas si ce serait vraiment faisable et flexible. Pour chaque ligne et chaque prix, ce serait peut-être trop lourd à gérer... ? 
      Ou sinon, j'ai juste pensé à avoir des liens qui pointeraient sur les PDF et les Excel mais il faudrait que ce soit HORS de mon dossier applicatif et que je puisse faire le lien vers un autre serveur : est-ce que c'est possible de faire ça ? 
      J'ai aussi vu en fouillant qu'il existait des bases de données NOSQL orientées documents mais je ne connais pas la souplesse de ces bases (notamment par rapport à Excel) et me demande aussi si une base SGBDR peut facilement communiquer avec ce genre de bases ? 
       
      C'est un peu long mais j'avoue que je suis un peu paumée et que je ne sais pas quelle serait la meilleure façon de procéder pour centraliser données et fichiers et avoir accès à tout très facilement. Peut-être que le gain de temps ne vaudrait pas la peine, après...  ? 
       
      Quelle est votre avis sur l'idée générale et quelles seraient vos idées pour gérer les documents ? 
       
      Je vous remercie pour vos réponses. 
       
      Bonne journée. 
×
×
  • Create New...