IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sécurité des données


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 69
    Points : 47
    Points
    47
    Par défaut Sécurité des données
    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.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Salut,

    il suffit de faire réaliser la lecture du mp3, non pas par apache, mais par php.

    En somme tu dois avoir une page, disons telechargement.php, avec deux arguments. Le code allopass, et le fichier désiré.

    Dans ce fichier, la première chose que tu dois faire c'est vérifier la validité du code allopas. Si le code n'est pas valide, tu doisl e signaler à l'utilisateur avec une page HTML d'erreur lisible.
    Autrement, dans le cas d'un code pleinement valide, tu executes la lecture du fichier avec php (cf fil_get_contents & co). Ensuite tu n'as plus qu'à manipuler les en tête HTML pour forcer un téléchargement (cf fontions header force/download & co).
    A la fin du téléchargement du fichier, tu rends le code inutilisable.

    Bien sur, tu devras mettre tes mp3 en dehors de ta racine web.... Sinon cela ne sert à rien ! Le but du jeu est bien de controler l'accessibilité (donc la lecture) des fichiers via PHP, et non laissé Apache faire cela tout seul.

    bye

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 69
    Points : 47
    Points
    47
    Par défaut
    Merci kaymak de ta réponse, ta solution fonctionne impécablement du moins sur PC... en effet mon site est site WAP 2.0 XHTML (tél portable, PDA). Je vais tenter d'expliquer pourquoi ça ne marche pas sur mon navigateur mobile...

    Lorsque j'utilise Apache pour télécharger, j'indique à Allopass en "cible" de téléchargement directement le fichier mp3, donc quand l'utilisateur clique sur OK après avoir entré son code, le code est vérifié sur les serveurs d'allopass puis en cas de validation pointe sur le lien de mon fichier.

    En revanche lorsque j'utilise PHP pour télécharger (avec la méthode que tu me suggères donc), j'indique à Allopass non plus un fichier mp3, mais un fichier php (telechargement.php) qui lui va permettre le téléchargement du fichier mp3. Et bien que ça marche sur PC, pour une raison que j'ignore sur mobile lorsque je clique sur OK (formulaire d'accès), au lien d'interpréter le fchier téléchargement.php, il tente de télécharger ce même fichier php ! Du coup je n'ai jamais accès au fichier mp3 qu'il devrait me créer.

    Bref, si jamais il n'y a pas d'issue pour faire le téléchargement en PHP, je me demandais s'il y avait une autre méthode avec Apache (.htaccess) qui permettait d'autoriser l'accès à un fichier uniquement via un script... où pensez-vous que c'est sans issue ?

    (encore une fois il est tard et je ne sais pas si je suis clair...)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 69
    Points : 47
    Points
    47
    Par défaut
    En fait je viens de remarquer qu'il télécharge bien le bon fichier mp3 en php mais il le renomme "telechargement.php", maintenant il faut que je trouve pourquoi...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 69
    Points : 47
    Points
    47
    Par défaut
    J'ai changé le type MIMIE et ai mis : header("Content-type: audio/mpeg"); à la place de force/download, et maintenant je télécharge un fichier "telechargement.mp3", y'a du progrès mais je n'ai toujours pas le nom du fichier...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 69
    Points : 47
    Points
    47
    Par défaut
    Je vous met la partie du code qui merde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	// Le code est valide : on lance le téléchargement du fichier
    	if(file_exists($fichier_local) == true) 
    	{
    		if(strstr($HTTP_USER_AGENT, "MSIE"))
    			$attachment = "";
    		else
    			$attachment = " attachment;";
     
    		header("Content-type: audio/mpeg");
    		header("Content-Disposition:".$attachment." filename=fichier.mp3");
    		header("Content-Description: File Transfert");
    		header("Content-Length: ".filesize("./mp3_files/fichier.mp3")); 
    		readfile("./mp3_files/fichier.mp3");
    	}
    sur PC ça me lance bien le fichier "fichier.mp3" mais sur mobile ça me lance "telechargement.mp3" (telechargement est le nom du script qui contient ce code...)

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 471
    Points : 15 859
    Points
    15 859
    Par défaut
    regarde dans la FAQ là :
    http://php.developpez.com/faq/?page=..._forcedownload
    il y a 2 entêtes à mettre pour que le nom du fichier soit reconnu par le maximum de client

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Virtualiser les serveurs, est-ce un risque pour la sécurité des données ?
    Par Jean-Philippe Dubé dans le forum Actualités
    Réponses: 3
    Dernier message: 03/06/2009, 16h00
  2. [MySQL] Indiquer l'adresse e-mail en clair dans l'URL et sécurité des données php et db
    Par Dendrite dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/06/2008, 23h02
  3. Hébergement et sécurité des données
    Par Mak2S dans le forum Sécurité
    Réponses: 3
    Dernier message: 13/03/2008, 19h46
  4. [Sécurité] Sécurité des données dans $_SESSION
    Par dinozor29 dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2007, 00h19
  5. [Conception] Sécurité des données d'une base
    Par viny dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 27/12/2006, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo