Interdire téléchargement fichiers

WRInaute accro
Bonjour,
Mes membres peuvent ajouter des mp3 sur mon site.
J'utilise jplayer pour que mes internautes puissent écouter les mp3 mais je ne veux pas qu'ils puissent récupérer l'URL pour télécharger.

Vous avez des idées pour protéger contre le téléchargement ?

Merci
 
WRInaute accro
Merci @spout toujours le bon lien ;)
Oui j'avais vu.
En faite, je pense avoir une solution efficace qui devrait refroidir 99% des petits malins.
Pour jplayer, je lui passe un fichier php avec paramètres cryptés puis dans ce fichier php, je décrypte et match les données. J'ai couplé ça avec la récupération du referer pour garantir que mon internaute demande bien à lire mon mp3 via jplayer.

J'ai fait le teste d'écouter via jplayer ça fonctionne et si j'essaie de copier-coller l'url en direct via le navigateur, je suis boulé en 404.
Donc c'est nickel ;)

Petit bémol... bah oui... ça serait trop simple :(

J'ai donc ceci dans mon jplayer:
Code:
//<![CDATA[
        $(document).ready(function(){
            $("#jquery_jplayer_1").jPlayer({
                ready: function () {
                    $(this).jPlayer("setMedia", {
                    mp3: "/interface/audio/mp3/eyJpdiI6IkVzNFlOUHBcL1Z1Wnc5VlpcL3VWRitZUT09IiwidmFsdWUiOiJ3d21Xckt2WDc1TDdUV2x4UWZZOEh1XC9kXC9FSElXWmFhVjV6WklBbDhjbFE9IiwibWFjIjoiOTM0ODFhMTQ4NDU4MjgwNTE0MmJlYzNlZDg1MjU3MDE4YjJjYzY0ZDgwY2E5NDk0OGIxNWU4YzYwYzRmZTE3MCJ9"
                    });
                },
                swfPath: "/interface/jplayer/dist/jplayer",
                supplied: "mp3",
                wmode: "window",
                useStateClassSkin: true,
                autoBlur: false,
                smoothPlayBar: true,
                keyEnabled: true,
                remainingDuration: true,
                toggleDuration: true
            });
        });
        //]]>

Et le guide jplayer précise:
http://jplayer.org/latest/developer-guide/#jPlayer-essential-formats
"MP3 String : Defines the URL of the mp3 audio format"

Mon paramètre "mp3" n'a pas d'extension MP3, c'est peut-être ce qui cloche mais l'affichage de jplayer déconne. Biensur, quand j'interroge mon url cryptée, je renvoie toutes les infos header nécessaire pour que jplayer comprenne que c'est bien un fichier mp3 à lire.

J'ai fait le test :
Code:
array:10 [▼
  0 => "HTTP/1.1 200 OK"
  1 => "Date: Wed, 17 Jul 2019 20:30:00 GMT"
  2 => "Server: Apache/2.4.25 (Debian)"
  3 => "Upgrade: h2"
  4 => "Connection: Upgrade, close"
  5 => "Last-Modified: Wed, 17 Jul 2019 07:32:23 GMT"
  6 => "ETag: "5dc4a5-58ddb7e7ebe1e""
  7 => "Accept-Ranges: bytes"
  8 => "Content-Length: 6145189"
  9 => "Content-Type: audio/mpeg"
]

Si je ne crypte pas mon URL:
1563440380-capture2.png


SI je crypte mon URL:
1563440544-capture3.png


La barre de progression disparaît quand l'url du mp3 est cryptée mais par contre, je peux lancer la lecture, tout fonctionne. C'est dommage, j'aimerai le garder pour esthétisme.

Une idée ?

Merci
 
WRInaute accro
T'es sûr qu'il ne manque qd même pas un entête HTTP (que ton serveur HTTP envoie de base grâce au mime type mp3) ?
 
WRInaute accro
Je me suis posé la même question mais je ne vois pas.
Quand j'appelle ma page php, si tout est ok, je renvoie ça.
Code:
if($url_audio == end($referer)){
                        $rep = sprintf(config('audio.r_telechargement'),$audio->membre_id);
                        $fichier = $audio->nom_fichier;
                        if(is_file($rep.$fichier)){
                            $taille = filesize($rep.$fichier);
                            header('Content-Type: audio/mpeg');
                            header('Content-Transfer-Encoding: binary');
                            header('Content-Length:'.$taille);
                            //header('Content-Disposition: inline; filename="'.$fichier.'"');
                            header('Expires: -1');
                            header('Cache-Control: no-cache');
                            header('Pragma: no-cache');
                            readfile($rep.$fichier);
                            exit();
                        }
 
Discussions similaires
Haut