Bonjour.
Je souhaite ne pas permettre l'accès à un répertoire de vidéos sauf quand la personne passe par le plugin Adobe Flash.
Via .htaccess, c'est possible?
De l'aide me serait utile c'est assez urgent. Merci.
Bonjour.
Je souhaite ne pas permettre l'accès à un répertoire de vidéos sauf quand la personne passe par le plugin Adobe Flash.
Via .htaccess, c'est possible?
De l'aide me serait utile c'est assez urgent. Merci.
Il faut que le plug-in Flash de lecture de la vidéo envoie dans sa requête au serveur une information spécifique pour permettre de différencier les requêtes classiques des requêtes faites par le player. On peut imaginer de vérifier le referer mais je n'en connais pas la valeur. Ensuite, une fois qu'on a l'élément différenciant on fait une protection hotlinking.
Genre une session sous PHP?
Je peux avoir un exemple, ça m'aiderait.
Merci.
Un exemple de quoi ? Genre ça ?
L'idée c'est de voir comment le player Flash peut être différencié d'un navigateur normal. Vérifier l'en-tête Referer (ce qu'on fait classiquement pour se protéger du hot linking : cf le lien que j'ai donné) peut permettre de faire cette différence mais ce n'est pas garanti. Tu peux aussi voir si l'en-tête User-Agent est différent. Ou encore, si c'est ton propre player, tu peux ajouter un paramètre d'URL dans tes requêtes qui permettra de faire la différence. Ou bien utiliser les sessions mais tout dépend de la manière dont les sessions sont créées et surtout les sessions valides ne pourront pas être vérifiées par Apache (il pourra juste vérifié que le cookie de session est présent, c'est tout).
Pour commencer, merci pour vos explications.
Ce que j'ai de fait jusqu'à maintenant, c'est d'aller chercher la vidéo à l'extérieur du docroot comme ceci :
Fichier getfile.php :
Si je vais sur getfile.php, la vidéo est appelée sans problème mais pour l'enregistrement sur le disque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $filename = "/wamp/demo.flv"; header('Content-Type: video/x-flv'); header ( 'Content-Disposition: attachment; filename = demo.flv'); header('Length: ' . filesize($filename)); $fd = fopen($filename, "r"); while(!feof($fd)) { echo fread($fd, filesize($filename)); flush(); } fclose ($fd); ?>
Le plugins jwplayer 5.8 dont le code de mon fichier player.php :
D'après moi, c'est dans ce fichier qui a un manque. Le fichier fait bien la lecture seulement si je mets le nom demo.flv mais si je mets getflv.php?demo.flv, la ça dit que ce n'est pas le bon format.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <script type='text/javascript' src='jwplayer.js'></script> <div id='mediaspace'>This text will be replaced</div> <script type='text/javascript'> jwplayer('mediaspace').setup({ 'flashplayer': 'player.swf', 'duration': '34', 'file': 'getflv.php?demo.flv', 'image': 'http://content.longtailvideo.com/videos/flvplayer.jpg', 'autostart': 'true', 'icons': 'false', 'stretching': 'fill', 'controlbar': 'bottom', 'width': '470', 'height': '320' }); </script>
Il faudrait que mon fichier player.php puisse aller chercher mon fichier vidéo à l'extérieur du docroot.
Rendu là, je ne sais pas comme je puisse faire.
Je comprends votre explication en bonne partie mais on suppose que mes vidéos sont situées dans le docroot. La meilleurs protection à mon avis contre la copie par le leech est de placer les fichiers à l'extérieur du docroot.
rendu là, je suis bloqué.
Pas nécessairement mais ça a l'avantage de pouvoir utiliser les sessions pour vérifier les autorisations d'accès dans getfile.php.
Pour savoir pourquoi le player se plaint il faudrait comparer les réponses du serveur lorsque tu appelles directement la vidéo et lorsque tu passes par getfile.php. Déjà, tu peux vérifier que lorsque tu demandes getfile.php tu as une requête envoyée au serveur par le player. Si le player ne fait aucune requête sur le serveur c'est que la syntaxe de l'URL ne lui plaît pas.
A ce que je sache, on peut lire un fichier qui est en dehors du web (public_html); par une commande PHP. Mais, les lecteurs vidéos, utilise les chemins web à l'intérieur de public_html/
Genre : http://.../ici
Mon poste n'est pas résolu pour le moment.
Partager