protection d'acces a certains fichiers

WRInaute discret
Bonjour tout le monde,

Tout d'abord, veuillez m'escuser pour les accents, je suis sur un clavier qwerty.

Donc voila je vous expose mon probleme :

En resume, je travaille sur le dev d'un site php/mysql, de formation en ligne, qui propose des formation "a la carte", c'est a dire que lorsque l'utilisateur s'inscit, il choisis ses cours dans le formulaire, ensuite un mail lui est envoye pour acceder a ses cours, avec un lien du type :

-http://www.example.com/cours.php?idsess=..............................

Ce qui va s'en dire qu'il y a plusieurs formation possible, mais une seule formation est accessible par user.

Les formation ne sont pas protegee par mot de passe, l'acces est seulement restreint et choisis grace a l'id de session de l'utilisateur.

Les formations sont en format HTML, et en format pdf.

C'est la que je bloque :

les fichiers pdf sont tous stockes dans un dossier a la racine nomme "pdf_files".

Lorsque l'on se trouve dans une formation HTML, on a un lien pour telecharger la formation au format pdf du type : -http://www.example.com/pdf_files/formation_1.pdf

ma question est la suivante :

Comment proteger sans l'aide de mot de passe l'acces au telechargement des autre fichiers pdf relatifs au autres formation. Parcque, pour l'user, il serait facile de tapper dans son navigateur :

-http://www.example.com/pdf_files/formation_2.pdf
-http://www.example.com/pdf_files/formation_3.pdf
.....

pour telecharger tous les pdf relatifs aux autres formations.

J'avais pense a nommer les fichiers pdf du type indevinable, par exemple "adjwnq3ni540jrn34n34b.pdf" mais je pense qu'avec un utilitaire comme flashget et son explorateur de site, il serait facile pour l'user de telecharger carrement le dossier "pdf_files" ......

j'ai aussi pense a proteger le dossier pdf_files par htacces, et, dans les formation HTML, plutot que d'appeler directement de fichier pdf avec une url du type :

-http://www.example.com/pdf_files/formation_1.pdf

appeler une page intermediaire :

-http://www.example.com/appel_pdf.php

qui fait la verification de l'id session, qui ensuite va chercher le fichier pdf, qui place le fichier pdf a telecharger dans un dossier pdf_files_tmp temporairement et redirige l'user sur celuici. Mais, comment s'authentifier dans un dossier protege par htacces avec un script php, et comment definir la duree du "temporairement" ?


Une idee ?? :)
 
WRInaute occasionnel
Je pense que l'idée session (ID Session) seule n'est pas une bonne idée s'il y a de l'argent en jeu...

Imaginons que j'achète une formation, elle me plait énormément parce qu'elle est fournie par example.com qui est très réputée... Je ne connais rien en informatique et qu'est ce que je fais, je file le lien à mon pote avec l'id session...

Par contre, l'accès avec un id session et une ip complique la chose pour les gens qui ne s'y connaissent pas trop. D'autant plus qu'il est possible de limiter l'accès à des répertoires par rapport aux ip (si je me souviens bien) avec htaccess...

Pour l'authentification par htaccess avec php, j'ai pas testé mais

https://www.google.com/search?num=3...=1&q=authentification+htaccess+en+php&spell=1

pour la durée, un cookie devrait faire l'affaire mais ce n'est pas non plus très sûr... Je travaille souvent avec les bases de données...
 
WRInaute passionné
flash get ne peut pas deviner le contenu d'un dossier, il a besoin de lien pour les suivre

rog
 
WRInaute discret
merci pour cette reponse,

Pour infos, il n'est pas du tout question d'argent, d'ou le choix plus simple des id session, le cas d'un copie/colle du lien avec l'id session et de la distribution ce lien a petite echelle n'est pas tres grave, au contraire meme, ca fait de la pub.
 
WRInaute discret
flash get ne peut pas deviner le contenu d'un dossier, il a besoin de lien pour les suivre

donc si je donne le lien :

-http://www.example.com/pdf_files/

a flasget, il ne pourra pas afficher le contenu du sossier ?
 
WRInaute passionné
ni flashget ni qucun autre programme ne peut deviner le contenu d'un dossier

tu mets un fichier index vide à l'interieur pour eviter que apache fasse un directory listing et c'est réglé

rog
 
WRInaute discret
ni flashget ni qucun autre programme ne peut deviner le contenu d'un dossier

tu mets un fichier index vide à l'interieur pour eviter que apache fasse un directory listing et c'est réglé

ok super je pensait pas
merci bien sujet clos
 
WRInaute accro
Antoine.B a dit:
merci pour cette reponse,

Pour infos, il n'est pas du tout question d'argent, d'ou le choix plus simple des id session, le cas d'un copie/colle du lien avec l'id session et de la distribution ce lien a petite echelle n'est pas tres grave, au contraire meme, ca fait de la pub.

alors pourquoi mettre une session ? fait en sorte que membre et non membre est acces aux formations si c'est du tout gratuit. Toute tes pages seront indexées par les moteurs. Google indexe aussi les pdf. Puis fait un forum pour discuter des formations et la il faut etre membre pour poster.
 
WRInaute discret
alors pourquoi mettre une session ? fait en sorte que membre et non membre est acces aux formations si c'est du tout gratuit. Toute tes pages seront indexées par les moteurs. Google indexe aussi les pdf. Puis fait un forum pour discuter des formations et la il faut etre membre pour poster.

en fait les users recoivent 1 cours par semaine, les sessions c'est pour gerer les "avancements" des differents users dans les formations


puis a propos du forum c'est pas moi qui fait le cahier des charges, je ne fait juste que de coder les fonctionalites que l'on me demande.

merci a vous
 
WRInaute discret
Antoine.B a dit:
donc si je donne le lien :

-http://www.example.com/pdf_files/

a flasget, il ne pourra pas afficher le contenu du sossier ?

Il faut quand même que le parcours du répertoire soit interdit par le serveur web sinon un simple navigateur suffira pour voir le contenu de pdf_files.
 
WRInaute accro
rog a dit:
tu mets un fichier index vide à l'interieur pour eviter que apache fasse un directory listing et c'est réglé
plus simplement, ajouter
Code:
IndexIgnore *
dans le htaccess. Le mieux étant de le faire dans celui de la racine, comme cela tous les répertoires sont protégés de l'affichage du contenu.
 
WRInaute discret
plus simplement, ajouter
Code:
IndexIgnore *
dans le htaccess. Le mieux étant de le faire dans celui de la racine, comme cela tous les répertoires sont protégés de l'affichage du contenu.

OK vais essayer ca merci
 
Discussions similaires
Haut