Discussion:
php flv
(trop ancien pour répondre)
capharnaeum
2007-11-03 12:23:23 UTC
Permalink
Bonjour je m'adresse ici a tout hasard.
J'utilise la technique connue pour protéger les photos du readfile je
m'explique :

HTML :
<img src="photoController.php?photo=photo1.jpg"> ainsi

photoController.php
readfile("/repertoire/non/public/".$_GET["photo"]);

Mon problème est avec un player flv pour qui je fais exactement la
même chose, lorsque je clique sur play la vidéo se joue nickel mais
une fois la vidéo lancée, je ne peux plus changer de page si je clique
sur un bouton de la page, c'est comme si il devait finir de la lire,
après l'avoir chargée entièrement, là il execute la commande de
changement de page.

j'ai essayé d'isoler le problème et voici ce que je trouve :

- au lieu d'utiliser cette technique je mets la vidéo dans un
repertoire public et je mets en parametre le chemin exact et là ca
marche, si je clique sur un bouton pour quitter la page cela
fonctionne.
- je garde l'ancienne technique et je fais un remove de l'objet flash
avec son id, l'object est supprimé de l'arbre dom mais le problème
periste, le browser (firefox et ie) ne repondent pas tout de suite au
clique.

quelqu'un a une idée, ou à réalisé une code similaire et pourrait me
donner des conseils, voilà le but étant de protéger l'accès au vidéos
flv

encore merci
John GALLET
2007-11-03 13:01:53 UTC
Permalink
Bonjour,
Post by capharnaeum
J'utilise la technique connue pour protéger les photos du readfile je
<img src="photoController.php?photo=photo1.jpg"> ainsi
photoController.php
readfile("/repertoire/non/public/".$_GET["photo"]);
Cette technique n'a qu'un seul intérêt: si le fichier a été uploadé par un
attaquant via une interface d'upload, on l'empêche de l'appeler
directement par http donc on empêche l'exécution, côté serveur, de contenu
potentiellement dangereux pour le serveur. Elle peut aussi être utile dans
le même cas si les serveurs sont en DMZ et qu'on n'a donc pas le droit
d'écrire sur les machines où tourne PHP. Pour ce que tu veux faire, elle
ne sert fichtrement à rien. Il te suffira de recopier directement
Loading Image... dans
un navigateur et de faire un "fichier, enregistrer sous" pour t'en
convaincre.

Par ailleurs, je ne vois pas instantanément de faille exploitable
utilement avec le code ci-dessus, mais par principe, je ne mettrais pas
directement les données reçues du monde extérieur dans l'appel à la
fonction readfile(). Il pourrait bien y avoir moyen (aujourd'hui ou
demain) de lui faire lire un fichier distant qui ne se trouvera pas sur
ton serveur et l'envoyer au client/navigateur (au hasard en injection un
caractère \000 ou autre saloperie). Par principe de base, TOUT ce qui
vient du monde extérieur DOIT être filtré ("input sanitazing" comme qu'on
dit). Ici, il faut autoriser seulement les caractères alphanumériques
ainsi que - et _ UNE SEULE fois le caractère . dans le nom du fichier par
exemple (et surtout pas / par exemple). Tu peux même vérifier une liste
d'extensions explicitement autorisées.
Post by capharnaeum
donner des conseils, voilà le but étant de protéger l'accès au vidéos
flv
Soyons clairs: à partir du moment où mon navigateur est capable de
récupérer le fichier, d'autres programmes aussi. Au hasard wget pour les
habitués de la ligne de commande shell ou Miro (http://www.getmiro.com/)
pour les excités du clickodrome. Et je suis étonné qu'il n'y ait pas déjà
des myriades de "toolbars" que l'on peut ajouter à IE ou autres Firefox
pour sauvegarder directement les contenus depuis le cache du navigateur
(peut-être qu'il y en a, je n'ai pas vérifié en profondeur). Ce n'est
qu'une question de temps que le "vilain cracker" voudra passer pour
récupérer tes fichiers. Dis toi bien que pour DailyMotion ou YouTube, ça
prend environ 10 secondes de trouver le bon lien à copier coller (HINT:
chercher "embed" dans le code source. Aïe, ça y est, je donne dans le
Full Disclosure maintenant...). Ceci est valable pour l'intégralité d'un
contenu de webapp.

a++;
JG
capharnaeum
2007-11-06 10:21:18 UTC
Permalink
Salut

voilà en fait comme j'utilise un framework, j'ai une fonction
preDispatch() avant de renvoyer la photo, je vérifie si la personne
est bien logger, voici le code de mon PhotoserviceController.php :
<?

require_once("Zend/Auth.php");
require_once("Zend/Controller/Action.php");

class Partner_PhotoserviceController extends Zend_Controller_Action
{


public function preDispatch()
{
$auth = Zend_Auth::getInstance();
if(! $auth->hasIdentity())
$this->_redirect("/path/to/login");
}

public function indexAction()
{

$this->_helper->viewRenderer->setNoRender();
header("Content-type: image/jpeg");
readfile("/chemin/vers/la/".$_GET["photo"]);

}


}

?>

du coup ça me protège de ceux qui tapent juste l'url, du coup dans le
preDispatch() je fais les vérifications que je veux.

mon problème est sur le lecteur flv qui monopolise le browser tant
qu'il n'a pas chargé toute la vidéo.
Philippe Le Van
2007-11-09 08:55:29 UTC
Permalink
Bonjour capharnaeum,
Post by capharnaeum
public function indexAction()
{
$this->_helper->viewRenderer->setNoRender();
header("Content-type: image/jpeg");
readfile("/chemin/vers/la/".$_GET["photo"]);
}
Essaye de renvoyer ton fichier par petits bouts à la place du readfile :
$fh = fopen($file, "rb");
while (!feof($fh)) {
print (fread($fh, 16384));
}
fclose($fh);

Cordialement,
Philippe
--
Création de sites web : http://www.kitpages.fr
John GALLET
2007-11-09 19:50:53 UTC
Permalink
Post by capharnaeum
du coup ça me protège de ceux qui tapent juste l'url,
Non: uniquement pour ceux qui ne sont pas loggués.
Post by capharnaeum
preDispatch() je fais les vérifications que je veux.
... et qui ne servent à rien pour empêcher de sauvegarder le flux dès lors
qu'on peut le voir.
k-
2007-11-22 07:25:57 UTC
Permalink
Post by capharnaeum
Bonjour je m'adresse ici a tout hasard.
J'utilise la technique connue pour protéger les photos du readfile je
<img src="photoController.php?photo=photo1.jpg"> ainsi
photoController.php
readfile("/repertoire/non/public/".$_GET["photo"]);
Mon problème est avec un player flv pour qui je fais exactement la
même chose, lorsque je clique sur play la vidéo se joue nickel mais
une fois la vidéo lancée, je ne peux plus changer de page si je clique
sur un bouton de la page, c'est comme si il devait finir de la lire,
après l'avoir chargée entièrement, là il execute la commande de
changement de page.
- au lieu d'utiliser cette technique je mets la vidéo dans un
repertoire public et je mets en parametre le chemin exact et là ca
marche, si je clique sur un bouton pour quitter la page cela
fonctionne.
- je garde l'ancienne technique et je fais un remove de l'objet flash
avec son id, l'object est supprimé de l'arbre dom mais le problème
periste, le browser (firefox et ie) ne repondent pas tout de suite au
clique.
quelqu'un a une idée, ou à réalisé une code similaire et pourrait me
donner des conseils, voilà le but étant de protéger l'accès au vidéos
flv
encore merci
Salut,

Je suis tomber par hazard, en cherchant des info sur php et le
streaming...

Pour ton problème, je ne vois vraiment pas pourquoi, ça bloque mais
une question, pourquoi tu ne changes pas simplement les droits sur ce
dossier?

Sinon, je suis tomber sur ça http://philflash.inway.fr/phpflvplayer/index.html
je crois que ça va tintéressé

Bye,
^_^
CrazyCat
2007-11-22 16:26:39 UTC
Permalink
Post by k-
Je suis tomber par hazard, en cherchant des info sur php et le
streaming...
Sinon, je suis tomber sur ça http://philflash.inway.fr/phpflvplayer/index.html
je crois que ça va tintéressé
Ou peut-être que ce que je décris à
<http://www.crazycat.info/astuce28-php-Faire_du_streaming_en_PHP.html>
peut être utile?
--
Réseau IRC Francophone: http://www.crazy-irc.net
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Continuer la lecture sur narkive:
Loading...