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

  FORUM HardWare.fr
  Programmation
  PHP

  faire une redirection header pour cacher une source

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

faire une redirection header pour cacher une source

n°1902270
pimsa
Posté le 04-07-2009 à 17:48:32  profilanswer
 

Bonjour,
 
Je m'explique:  :)  mon lecteur vidéo flash permet de lire des vidéos au format flv et mp4. Il se présente comme celà:
 

Code :
  1. <script type="text/javascript">
  2. blablabla
  3. so.addParam('flashvars','&file=http://monsite.fr/mondossier/mavideo.flv&image=./img/monimage.jpg&blabla=etc&blabla2=etc2');
  4. blablabla
  5. </script>


 
On voit donc le lien direct vers la vidéo dans le code source. Je cherche à masquer cette adresse (je sais que c'est vain mais j'y tiens). Par exemple en la substituant par:
 
"http://monsite.fr/lirefichier.php?file=aHR06qsdqsdz8797sdklsjdlz87987blablablaetc678erke"
 
où "aHR06qsdqsdz8797sdklsjdlz87987blablablaetc678erke" serait une chaîne encodée en base64 ou autre.
 
 
 
 
 
il faudrait donc que lirefichier.php "décrypte" (base64_decode) la chaine passée en GET et renvoie le lien direct de la vidéo.
 
Comment procéder?
1) lirefichier.php doit-il simplement renvoyer une chaine de caractère (l'adresse direct de la vidéo)?
2) ou bien doit-on faire une redirection de type header() avec le ContentType qui va bien? (auquel cas j'aurai besoin d'une aide/piste)
 
 
 
Merci  :jap:

mood
Publicité
Posté le 04-07-2009 à 17:48:32  profilanswer
 

n°1902273
esox_ch
Posté le 04-07-2009 à 17:57:33  profilanswer
 

Ni un ni l'autre
 
Tu fais que ton lirefichier.php fasse un readfile sur le bon fichier, mette les headers qui vont bien, et là plus besoin d'url dans l'html :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1902276
CyberDenix
Posté le 04-07-2009 à 18:03:34  profilanswer
 

Quoi que tu fasses, en utilisant ton url lirefichier.php, on pourra accéder à l'url de ton média, sinon au code source du média.
 
Mais pour "protéger" un minimum ton code, tu peux externaliser le script dans un fichier .js et appeler une fonction js, ce qui sera probablement moins visible qu'un bout de code directement dans la source. N'hésites pas à donner un nom psychologique à cette fonction, du genre "securizeMedia(a15fsdsjhn58q9fc56q5)". Ca coute rien, et des fois ça fait peur ;)
 
Tu peux aussi envoyer, sur le modèle de ton fichier .php, une variable encodée en fonction du temps et n'autoriser le renvoit de l'url du média que si le temps est inférieur à un intervalle donné (une minute par exemple).
 
Enfin n'hésites pas à interdire l'accès direct au répertoire via un fichier .htaccess.


Message édité par CyberDenix le 04-07-2009 à 18:04:45

---------------
Directeur Technique (CTO)
n°1902290
pimsa
Posté le 04-07-2009 à 18:43:58  profilanswer
 

merci à vous.
 
en fait je ne cherche pas à protéger la vidéo, et de toute façon comme je l'ai précisé ce serait vain (facile à trouver avec Wireshark).
Je veux simplement masquer l'url.
 
De plus la vidéo est hostée sur un autre serveur, donc readfile laborieux à mettre en place.
 
Je voudrais vraiment passer par un fichier de type "lirevideo.php" avec l'adresse en argument GET
 
 :jap:

n°1902295
esox_ch
Posté le 04-07-2009 à 18:54:36  profilanswer
 

Bon laissons tomber le fait pour enregistrer ta vidéo avec Wireshark faut vraiment avoir du temps à perdre (et connaître Wireshark).
 
readfile laborieux : A fond.... faut juste appeler l'url en question, et se gaffer que fopen wrappers soit enable :heink:
 
Donc, au lieu de t'amuser à encrypter tes trucs dans tous les sens, pourquoi tu mémorise pas tes URL dans une base de donnée/fichier XML/autre et tu passes juste un id à lirefichier?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1902298
pimsa
Posté le 04-07-2009 à 19:01:10  profilanswer
 

oui pardon je pensais à readdir en écrivant readfile.  :o  
 
les url sont déjà dans une bdd. pourquoi ferais-je des requetes sql alors qu'un passage de l'adresse du fichier par l'url va très bien pour ce que je souhaite faire...
 
et même, admettons, xml ou bdd ou ce que tu veux, d'accord, tu me demandes de passer un id à lirefichier.php, ok, qu'est-ce que lirefichier va retourner? une chaine de caractère? c'est ma question du début en fait.

n°1902306
esox_ch
Posté le 04-07-2009 à 19:21:38  profilanswer
 

Non mais bon, t'as 2 manières de faire :
 
- "sécuriser" ton URL en javascript comme CyberDenix l'a proposé. Le problème c'est qu'avec les bon outils dans ton navigateur, tu dévoiles l'URL en 5 secondes
- utiliser ma méthode, donc tu passes un id à ton fichier.php, ce dernier va chercher dans la bdd l'url (d''accord que les requêtes sont "lourdes" mais faut pas abuser, c'est pas un misérable select sur 1 champ qui va te plomber tes perf) et la passe à readfile, qui lui balance directement le tout à l'utilisateur
 
J'ai déjà utilisé ma méthode en prod é plusieurs reprises et j'ai jamais eu de feedback négatif :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1902316
pimsa
Posté le 04-07-2009 à 20:47:43  profilanswer
 

ok ok ok, je regarde du côté de readfile, j'avais pas tilté mais d'après la doc ça correspondrait bien à ce que je souhaite.
j'essaye tout de suite et je te dis ça.  :jap:

n°1902322
pimsa
Posté le 04-07-2009 à 22:22:36  profilanswer
 

donc je viens d'essayer ceci:

 


fichier lirevideo.php

Code :
  1. <?php
  2. if ( isset($_GET['play']) ){
  3.     $flv=base64_decode( htmlentities($_GET['play'], ENT_QUOTES) );
  4.     header('Content-Description: File Transfer');
  5.     header('Content-Type: application/octet-stream');
  6.     header('Content-Disposition: attachment; filename='.basename($flv));
  7.     header('Content-Transfer-Encoding: binary');
  8.     header('Expires: 0');
  9.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  10.     header('Pragma: public');
  11.     header('Content-Length: ' . filesize($flv));
  12.     ob_clean();
  13.     flush();
  14.     readfile($flv);
  15.     exit;
  16. }
  17. else{
  18. echo'erreur';
  19. }
  20. ?>
 

qui ne passe pas dans le lecteur. En effet la vidéo n'est pas lue, par contre si je rentre dans mon navigateur lien de type lirevideo.php?play=jsldqjl7687687jlkjblablablaetcetcetcetc

 

et bien il me propose de le télécharger, naturellement (car "Content-Disposition: attachment" ).

 

que faut-il modifier pour autoriser le streaming de ce fichier?

 


autre question:

 

comme je fais un readfile du fichier, et que ce fichier est hébergé ailleurs sur un serveur de stockage, est-ce que c'est la bande-passante de ce dernier ou bien la bande passante du serveur qui heberge lirevideo.php qui est consommée?


Message édité par pimsa le 04-07-2009 à 22:23:52
n°1902695
grosbin
OR die;
Posté le 06-07-2009 à 13:57:49  profilanswer
 

Tu peux mettre un base64 pour le lien de ton fichier, un critère temporel >=5sec pour son accès, puis une redirection 301 finale sur le fichier
( qui te permet au passage de compter les hits sur ce fichier )


---------------
Photos Panoramiques Montagnes Haute Savoie

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

  faire une redirection header pour cacher une source

 

Sujets relatifs
INSERT en prenant 2 lignes dans la table sourcePasser un header à un iframe
Problème avec fonction header() + syntaxe.[JavaScript] Cacher une ligne d'un tableau avec une hauteur à 0
Redirection d'un domaine vers un sous dossier d'un autre domaineredirection à une page lors de la reconnaissance de l'IP
Code source d'une page internetOpen Source
Redirection conditionnelle ?Enregistrer une source
Plus de sujets relatifs à : faire une redirection header pour cacher une source


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