Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1973 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème de sécurité des données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de sécurité des données

n°1521987
Da KJ
Posté le 28-02-2007 à 22:11:40  profilanswer
 

Bonjour,
 
Dans le cadre d'un projet d'étude pour mon école, je suis en train de faire un site de téléchargement payant de "fichiers" (disons des mp3). Ce système de paiement passe par Allopass, système de paiement à l'acte bien connu.
 
Je rappelle rapidement le principe : l'utilisateur appelle un numéro et reçoit un code qu'il doit entrer dans un formulaire pour avoir accès au fichier protégé.
 
Le problème est que ce fichier est accessible dès qu'on connaît l'URL qui y mène. (un coup de FlashGet et c'est reglé ). De plus si j'interdis l'accès aux répertoires contenant mes MP3 payants, l'interdiction s'appliquera également quand on rentre un code d'accès...
 
Le site d'allopass conseille pour sécuriser ses "pages" d'utiliser les sessions en PHP. Le problème c'est que ça marche lorsqu'on veut sécuriser le contenu d'une page web, mais comment faire lorsqu'il s'agit de fichiers tels que des MP3 ?
 
J'espère que je suis clair, sinon n'hésitez pas à me reprendre.
 
Merci d'avance pour vos lumières.

mood
Publicité
Posté le 28-02-2007 à 22:11:40  profilanswer
 

n°1521991
gooopil
pfiew
Posté le 28-02-2007 à 22:14:48  profilanswer
 

1. Une page qui vérifie le code allopass, crée une var de session le_code_fourni_est_bon et propose un lien telecharge.php?id=iddump3
2. ta page telecharge.php vérifie le contenu de la session et si c'est tout bon, envoie le fichier avec les headers qui vont bien...
 
Voila

n°1521998
Da KJ
Posté le 28-02-2007 à 22:37:41  profilanswer
 

Oui mais comment empêcher le gars de choper les fichiers directement en tappant le nom de l'url genre "http://monsite/monfichier.mp3" ?
 
C'est ça mon problème, le code pour le système de téléchargement par allopass je l'ai déjà...

n°1522001
gooopil
pfiew
Posté le 28-02-2007 à 22:46:08  profilanswer
 

Parce que le gars il la voit pas cette url, ton script seul la voit... Et par ailleurs tu protèges le répertoire de tes mp3 avec htaccess pour que seul ton script puisse lire dans le rep...

n°1522007
Da KJ
Posté le 28-02-2007 à 23:05:00  profilanswer
 

gooopil a écrit :

Et par ailleurs tu protèges le répertoire de tes mp3 avec htaccess pour que seul ton script puisse lire dans le rep...


 
Si c'est possible, c'est effectivement ce que j'aimerais faire, mais comment ?
 
(je sais juste interdire ou restreindre avec mot de passe mais je ne savais pas qu'on pouvait faire en sorte que l'accès au répertoire ne puisse se faire qu'à travers un script)


Message édité par Da KJ le 28-02-2007 à 23:06:08
n°1522016
gooopil
pfiew
Posté le 28-02-2007 à 23:28:49  profilanswer
 

T'as les pistes, un petit coup de google maintenant, ça peut pas faire de mal...

n°1522032
Da KJ
Posté le 01-03-2007 à 00:57:12  profilanswer
 

Déjà, merci pour les pistes.
 
J'ai cherché et j'ai trouvé qu'on pouvait limiter l'accès aux protocoles GET et POST, mais je ne vois pas comment limiter l'accès à un script... :/

n°1522035
anthomicro
Posté le 01-03-2007 à 01:05:11  profilanswer
 

Salut,
 
le script ne passe pas par HTTP pour accéder aux données, le htaccess n'aura donc aucune influence sur lui.
 
a +

n°1522036
Da KJ
Posté le 01-03-2007 à 01:18:49  profilanswer
 

ben apparament si puisqu'avec un htaccess avec "deny from all" lorsque je passe par le script il me met un Forbidden. :/


Message édité par Da KJ le 01-03-2007 à 01:19:24
n°1522038
anthomicro
Posté le 01-03-2007 à 01:28:24  profilanswer
 

bah ton script passe par HTTP pour faire ses actions dans ce cas ;)
 
Un script avec un fopen local ne sera pas gêné par un htaccess.

mood
Publicité
Posté le 01-03-2007 à 01:28:24  profilanswer
 

n°1522202
Da KJ
Posté le 01-03-2007 à 13:10:44  profilanswer
 

Bonjour, merci j'ai un peu avancé.
 
J'utilise maintenant le téléchargement à l'aide de PHP au lieu de laisser faire Apache.
 
Ca marche très bien sous PC, mais pas sur mobile (mon site est un site WAP 2.0 XHTML), le problème sur mobile c'est qu'il ne renomme pas correctement le fichier lors du téléchargement, en clair j'ai une page telechargement.php qui créé le fichier "fichier.mp3", mais quand je télécharge sous mobile, le fichier porte le nom "telechagement.mp3" au lieu du nom que je lui est indiqué.
 
extrait de mon code :  

Code :
  1. // Le code d'accès est valide : on lance le téléchargement du fichier
  2. if(file_exists($fichier_local) == true)
  3. {
  4.  if(strstr($HTTP_USER_AGENT, "MSIE" ))
  5.   $attachment = "";
  6.  else
  7.   $attachment = " attachment;";
  8.  header("Content-type: audio/mpeg" );
  9.  header("Content-Disposition:".$attachment." filename=fichier.mp3" );
  10.  header("Content-Description: File Transfert" );
  11.  header("Content-Length: ".filesize("./mp3_files/fichier.mp3" ));
  12.  readfile("./mp3_files/fichier.mp3" );
  13. }


 
on voit qu'à la ligne 10 j'ai bien spécifié filename=fichier.mp3, mais ça ne prend que sur PC...


Message édité par Da KJ le 01-03-2007 à 13:11:50
n°1522257
leflos5
On est ou on est pas :)
Posté le 01-03-2007 à 14:36:53  profilanswer
 

Si tu respectes les standards je suis sur que les navigateurs légers respectant les normes sans chercher à interprêter les erreurs sera ravi :whistle:
 
Donc relis bien tes " et penses aussi à ' quand " se justifie pas et en plus t'embrouille ;)

n°1522300
Da KJ
Posté le 01-03-2007 à 15:05:07  profilanswer
 

Pourrais-tu être plus explicite ?
 
Je pensais que " et ' c'était la même chose...
 
edit: j'ai remplacé les double quotes par des simples, ça ne change rien


Message édité par Da KJ le 01-03-2007 à 15:18:10
n°1522705
leflos5
On est ou on est pas :)
Posté le 02-03-2007 à 10:45:59  profilanswer
 

Bases de php:
 
- simple quote -> chaine de caractères "simple"
 
- double quote -> chaine de caractères, mais les caractères sont évalués à l'intérieur avant de pondre le résultat de la chaine. Pour échapper l'interprêtation d'un caractère évaluable/spécial, il faut utiliser \ devant

Code :
  1. $jour='vendredi';
  2. $chaine1='on est $jour'; //on est $jour
  3. $chaine2="On est $jour"; //on est vendredi


 
Passé ce petit rappel, tu ferais mieux de faire

Code :
  1. header('Content-type: audio/mpeg');
  2. header('Content-Disposition:'.$attachment.' filename="fichier.mp3"'); // ou header("Content-Disposition:$attachment filename=\"fichier.mp3\"" );
  3. header('Content-Description: File Transfert');
  4. header('Content-Length: '.filesize('./mp3_files/fichier.mp3'));


Tu aurais vu qu'à la ligne 2 il manque des guillemets autour du nom de fichier, ça changera peut être pas grand chose, mais si déjà tu respectes ce qu'il faut, y'a plus de chances que ça marche ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème de sécurité des données

 

Sujets relatifs
Problème mineur localhostProblème avec Expressions régulières preg_match
Probleme de string[PHP] problème code...
probleme de Float[GD] Problème d'écriture de texte
Probleme banniere qui s'affiche pas(lors d'impression)Probleme de retour arriére dans une calculette
Lancement d'une JVM distante, problème de séparateur dans le classpathProbléme Affichage de texte à l'écran
Plus de sujets relatifs à : Problème de sécurité des données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR