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

  FORUM HardWare.fr
  Programmation
  PHP

  Sécuriser le téléchargement de photos payantes (Ex: GettyImages)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sécuriser le téléchargement de photos payantes (Ex: GettyImages)

n°1166392
Label83
Posté le 01-08-2005 à 10:10:34  profilanswer
 

Bonjour à tous,
 
Je dois développer pour mon stage un site de vente de photos d'événements sportifs. Très exactement sur le modèle de http://creative.gettyimages.com mais spécialisé dans le sport.
Mon problème est que je ne veux pas que lorsqu’un client achète les droits de téléchargement d'une photo il puisse accéder à toutes les autres photos en manipulant l'url.
Exemple :
Je suis un client et j'ai acheté la photo « 01.jpeg », j’ai donc maintenant accès à un lien de la forme :
http://www.monsite.com/photos/01.jpeg
Il se trouve que je suis un petit futé et je que je décide de changer l’url en :
http://www.monsite.com/photos/02.jpeg
Et là, oh magie, je peux télécharger gratuitement une autre image.
Et ça je doute que ça fasse rire le client pour qui je dois développer le site… ;)
 
Voici les « solutions » que j’ai déjà trouvées :
 
1. Ne pas permettre le téléchargement, mais envoyer directement l’image au client.
-> Problème : Envoyer (email) une image de 300dpi qui va peser entre 3 et 10 Mo ce n’est bien évidemment pas possible.
 
2. Déplacer l’image concernée par le téléchargement dans un dossier temporaire et envoyer cette url « temporaire » donc au client.
-> Problème : Déplacer des fichiers de plusieurs mégaoctets (3-10 Mo) va représenter une charge de travail non négligeable pour le serveur. De plus ce n’est pas une solution rationnelle (deux fichiers identiques à deux endroits différents au même moment…).
 
3. Donner un nom complexe à chacune des images.  
Exemple :  
01.jpeg -> fgfdUDDfdf34nfdU2njdfds76jfds_dsf7633dsffsf765dsd.jpeg
De cette manière il y a peu de chance que le petit malin puisse tomber sur un autre nom d’image.  
-> Problème : Mais la possibilité existe toujours, cette solution n’est donc pas 100% fiable. De plus la maintenance du site est un peu compliquée par cette charte de nommage peu orthodoxe, et ce n’est pas très user friendly, le client se retrouvant donc avec des images au nom exotique sur son ordinateur…
 
4. Utiliser les propriétés d’URL rewriting (ou simplement de Redirect ?).
En utilisant un fichier .htaccess je fais en sorte que l’url apparente de la forme http://www.monsite.com/photo.php?i [...] ffsf765dsd soit en réalité interprétée par le serveur apache comme http://www.monsite.com/pct/01.jpeg de cette manière le petit malin ne peut télécharger une image gratuitement en changeant l’id (voire solution 3).
-> Problème : Identique à la solution 3. De plus utiliser un fichier .htaccess entraine une hausse de la consommation en ressource système sur le serveur. De plus je ne suis pas certain de pouvoir obtenir ce genre de chose avec un .htaccess. Confirmation ? / Infirmation ?
 
Voilà où j'en suis aujourd'hui...
 
Je suis donc preneur de toute autre solution / conseil etc... ;)
 
Merci beaucoup

mood
Publicité
Posté le 01-08-2005 à 10:10:34  profilanswer
 

n°1166399
mcjoedassi​n
Posté le 01-08-2005 à 10:15:21  profilanswer
 

tu peux faire http://www.monsite.com/photo.php avec dedans  
 
session_start();
if (droits_ok(..)) {
    header("Content-Type: image/jpeg" );
    include("repertoireprotege/imageaafficher.jpg" );
}


Message édité par mcjoedassin le 01-08-2005 à 10:16:18
n°1166665
cinocks
Posté le 01-08-2005 à 13:05:59  profilanswer
 

appel d'un script php avec identification du type, puis apres validation du user/pwd, envoyer l'image, toujours php, avec les header.


---------------
MZP est de retour
n°1166723
Profil sup​primé
Posté le 01-08-2005 à 13:59:59  answer
 

+1

n°1166725
afbilou
pouet your life
Posté le 01-08-2005 à 14:03:17  profilanswer
 

Et les images protegees seront mises dans un repertoires protege par un .htaccess par exemple :)
 
Edit : on ne le repetera jamais assez mais include (de meme que require) inclut le contenu du fichier mais il y a un mecanisme de parsing du code PHP a l'interieur du fichier inclus qui est mis en route. Depense inutile de ressource ! Mieux vaut utiliser readfile lorque le fichier a inclure ne contient pas de PHP.


Message édité par afbilou le 01-08-2005 à 14:08:14
n°1166738
Profil sup​primé
Posté le 01-08-2005 à 14:15:52  answer
 

un chmod 700 sur le dossier d'images suffirait à les protéger non ?

n°1166753
dwogsi
Défaillance cérébrale...
Posté le 01-08-2005 à 14:24:55  profilanswer
 

Ca riquerait pas géner au niveau de l'accès aux photos par php?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1166761
mcjoedassi​n
Posté le 01-08-2005 à 14:31:17  profilanswer
 

éventuellement tu mets l'extension .jpg et un fichier .htaccess avec
<Files machin.jpg>
    ForceType application/x-httpd-php
</Files>
 
sinon, non, ça ne gène pas ...
 
c'est fou comme les sujets peuvent se ressembler
http://forum.hardware.fr/hardwaref [...] m#t1166640

n°1169616
Label83
Posté le 04-08-2005 à 04:46:41  profilanswer
 

Thx guys!
 
Je regarde tout ça, merci beaucoup.

n°1181982
Label83
Posté le 23-08-2005 à 09:17:58  profilanswer
 

Label83 a écrit :

Thx guys!
 
Je regarde tout ça, merci beaucoup.


 
Bonjour à tous,
Je me suis repenché aujourd'hui sur cette problématique et en suivant vos réponses j'ai trouvé le bout de code suivant (http://au.php.net/header):
 

Code :
  1. <?PHP
  2. function dl_file($file){
  3.    //First, see if the file exists
  4.    if (!is_file($file)) { die("<b>404 File not found!</b>" ); }
  5.    //Gather relevent info about file
  6.    $len = filesize($file);
  7.    $filename = basename($file);
  8.    $file_extension = strtolower(substr(strrchr($filename,"." ),1));
  9.    //This will set the Content-Type to the appropriate setting for the file
  10.    switch( $file_extension )
  11.    {
  12.      case "jpeg":
  13.      case "jpg": $ctype="image/jpg"; break;
  14.      //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
  15.      case "php":
  16.      case "htm":
  17.      case "html":
  18.      case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>" ); break;
  19.      default: $ctype="application/force-download";
  20.    }
  21.    //Begin writing headers
  22.    header("Pragma: public" );
  23.    header("Expires: 0" );
  24.    header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
  25.    header("Cache-Control: public" );
  26.    header("Content-Description: File Transfer" );
  27.  
  28.    //Use the switch-generated Content-Type
  29.    header("Content-Type: $ctype" );
  30.    //Force the download
  31.    $header="Content-Disposition: attachment; filename=".$filename.";";
  32.    header($header );
  33.    header("Content-Transfer-Encoding: binary" );
  34.    header("Content-Length: ".$len);
  35.    @readfile($file);
  36.    exit;
  37. }
  38. dl_file('my_pictures/IMG_5575.jpg');
  39. ?>


 
Ca m'a l'air de fonctionner et ça semble assez sécurisé.
 
Je poursuis dans cette voie ;)
 
Merci encore
 
Cheers,
Pierre


Message édité par Label83 le 23-08-2005 à 09:18:53

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

  Sécuriser le téléchargement de photos payantes (Ex: GettyImages)

 

Sujets relatifs
bases de donnees et photosNamo WebEditor 6: affichage de légendes photos
Telechargement sans nom/adresse du fichierTelechargement sans nom/adresse du fichier
Limite de téléchargementphotos en mouvement
[ActiveX][CAB] web install / problème téléchargementréaliser un diaporama de photos en php
telechargement de plusieurs fichiers en mm tempsPhotos satellite en plein écran
Plus de sujets relatifs à : Sécuriser le téléchargement de photos payantes (Ex: GettyImages)


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