Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Images en .php

4 réponses
Avatar
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).

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

4 réponses

Avatar
Vince
Denis Beauregard a écrit :
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 ?



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).
Avatar
Olivier Miakinen
Le 16/11/2012 17:06, Vince répondait à Denis Beauregard :

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.

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
Avatar
Denis Beauregard
Le Fri, 16 Nov 2012 18:15:46 +0100, Olivier Miakinen
<om+ écrivait dans fr.comp.lang.php:

Le 16/11/2012 17:06, Vince répondait à Denis Beauregard :

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.

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?no3142_3106519828.

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


Denis
Avatar
Olivier Miakinen
Le 16/11/2012 20:48, Denis Beauregard a écrit :

Une idée dingue mais est-ce qu'il me suffirait d'utiliser plutôt
image.php?no3142_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.