Discussion:
Images en .php
(trop ancien pour répondre)
Denis Beauregard
2012-11-16 15:59:34 UTC
Permalink
Bonjour,

Sur un site, on a 2 millions d'images. Pour empêcher le piratage des
images, elles sont envoyées sous forme d'un script .php qui valide
la session puis envoie l'image. Le nom du fichier est en .php et non
en .jpg même si pour un usager inscrit, le résultat est une image
.jpg.

Cela fonctionne pour la plupart des usagers mais certains ne voient
plus les images, apparemment suite à une mise à jour de Windows 7.
On est encore sous enquête pour comprendre ce qui se passe (le
logiciel est installé depuis plusieurs mois et il y a peu d'usagers
qui ont le problème).

Le code au début de l'image est à peu près ceci :


<?php

session_start ();
include_once /..../

confirmer_session ();

// suite du code pour aller chercher le nom du fichier dans $image

//l'image est ensuite envoyée telle quelle
//rien n'est envoyé auparavant sauf s'il y a une erreur

header("Content-Type: image/jpeg");
header("Content-Disposition: inline;
filename=\"".Valeur('no',"0").".jpg\"");
readfile($image);

?>

Ma question : l'extension de l'image est .php et non .jpg. Est-ce
MS est tombé sur la tête et ne reconnaît plus qu'un .php puisse
être autre chose que du html ?


Denis
Vince
2012-11-16 16:06:42 UTC
Permalink
Post by Denis Beauregard
Bonjour,
Sur un site, on a 2 millions d'images. Pour empêcher le piratage des
images, elles sont envoyées sous forme d'un script .php qui valide
la session puis envoie l'image. Le nom du fichier est en .php et non
en .jpg même si pour un usager inscrit, le résultat est une image
..jpg.
Cela fonctionne pour la plupart des usagers mais certains ne voient
plus les images, apparemment suite à une mise à jour de Windows 7.
On est encore sous enquête pour comprendre ce qui se passe (le
logiciel est installé depuis plusieurs mois et il y a peu d'usagers
qui ont le problème).
<?php
session_start ();
include_once /..../
confirmer_session ();
// suite du code pour aller chercher le nom du fichier dans $image
//l'image est ensuite envoyée telle quelle
//rien n'est envoyé auparavant sauf s'il y a une erreur
header("Content-Type: image/jpeg");
header("Content-Disposition: inline;
filename=\"".Valeur('no',"0").".jpg\"");
readfile($image);
?>
Ma question : l'extension de l'image est .php et non .jpg. Est-ce
MS est tombé sur la tête et ne reconnaît plus qu'un .php puisse
être autre chose que du html ?
Vous pouvez peut-être utiliser le RewriteRule d'apache pour avoir des .jpg au
lieu de .php.

PS: Je ne suis pas certain de l'efficacité d'un tel script pour éviter le
piratage (mais c'est un autre débat).
Olivier Miakinen
2012-11-16 17:15:46 UTC
Permalink
Post by Vince
Vous pouvez peut-être utiliser le RewriteRule d'apache pour avoir des .jpg au
lieu de .php.
Oui, ou tout simplement avec « Options +MultiViews », en nommant le
fichier exemple.jpg.php, et en ne donnant que exemple.jpg dans l'URL.
Post by Vince
PS: Je ne suis pas certain de l'efficacité d'un tel script pour éviter le
piratage (mais c'est un autre débat).
Je pense que l'idée est de vérifier grâce aux sessions que la personne
est connectée. Cela évite que quelqu'un puisse lire l'image avec juste
l'URL, sans se connecter d'abord.

Cordialement,
--
Olivier Miakinen
Denis Beauregard
2012-11-16 19:48:33 UTC
Permalink
Le Fri, 16 Nov 2012 18:15:46 +0100, Olivier Miakinen
Post by Olivier Miakinen
Post by Vince
Vous pouvez peut-être utiliser le RewriteRule d'apache pour avoir des .jpg au
lieu de .php.
Oui, ou tout simplement avec « Options +MultiViews », en nommant le
fichier exemple.jpg.php, et en ne donnant que exemple.jpg dans l'URL.
Post by Vince
PS: Je ne suis pas certain de l'efficacité d'un tel script pour éviter le
piratage (mais c'est un autre débat).
Je pense que l'idée est de vérifier grâce aux sessions que la personne
est connectée. Cela évite que quelqu'un puisse lire l'image avec juste
l'URL, sans se connecter d'abord.
On a fini par trouver la source du problème chez un usager (parmi
les 4 qui ont le problème) : c'est une nouvelle version de Karperski
qui cause le problème ! En désactivant l'antivirus, les images sont
reçues.

Je vais chercher une image avec image.php?no=113142_3106519828.

Une idée dingue mais est-ce qu'il me suffirait d'utiliser plutôt
image.php?no=113142_3106519828.jpg ???


Denis
Olivier Miakinen
2012-11-16 22:54:27 UTC
Permalink
Post by Denis Beauregard
Une idée dingue mais est-ce qu'il me suffirait d'utiliser plutôt
image.php?no=113142_3106519828.jpg ???
Je crois me rappeler avoir contourné un bug de IE 6 avec une astuce de
ce genre... mais c'est vieux, je ne suis pas sûr de bien me souvenir.
Loading...