2010-07-22 3 views
0

Je voudrais appeler un fichier swf qui prend des paramètres, mais je ne veux pas que ces paramètres à l'état visible sur le client (disons jeton ou quelque chose comme une authentification secret).paramètres flash Hiding dans un script php

Je pensais que je voudrais écrire un simple script proxy PHP comme ceci:

header('Content-type: application/x-shockwave-flash'); 
readfile('http://path/to/swf/file.swf?here=are&some=parameters'); 

Et puis simplement faire

<embed src="/path/to/php/proxy.php'/> 

Mais les paramètres flash ne semblent pas le faire à la swf. Est-ce que quelque chose comme ça est possible?

Répondre

-1

Les paramètres GET ne fonctionnent pas de cette manière. Ils ne fonctionnent que sur le web. Votre fichier SWF peut-il accepter les paramètres via une autre méthode, telle que POST?

La meilleure façon serait de les chiffrer, mais presque tout ce que vous faites sera probablement nécessaire de changer Flash d'accepter un autre type d'entrée.

+0

Bien sûr, ils fonctionnent de cette façon. readfile fait une requête sur HTTP comme un navigateur web, et si je mets l'URL avec la chaîne de requête directement dans mon navigateur, ça marche très bien. – blockhead

+0

Non, ils ne le font pas. Vous accédez au fichier SWF via le système de fichiers, pas le serveur Web. –

+0

J'ai mis à jour mon message pour qu'il soit plus clair qu'il utilise HTTP – blockhead

0

Il n'y a aucun moyen de lancer une animation flash avec tous les paramètres qui ne sont pas invisibles à l'utilisateur. (Vous pouvez toujours utiliser Firebug ou quelque chose de similaire.)
L'approche la plus simple consisterait à recevoir les données du serveur après le démarrage du film et à crypter la communication entre elles.

+0

Pas bon, mais pas trivial, le code ajax peut être clairement vu dans le débogueur JS ... – rioki

+0

c'est pourquoi vous devriez le crypter ... ;-) – TheHippo

0

La façon dont vous faites les paramètres ne sont pas envoyés dans le cadre de la requête GET si Flash ne ne les voit jamais.

Il n'y a pas de moyen simple de faire ce que vous voulez, mais votre meilleur pari est de re-générer le jeton auth pour l'utilisateur chaque fois qu'ils se connectent, et même de faire tourner le jeton après chaque appel que vous faites au serveur. Le vrai, c'est que vous ne pouvez rien cacher à un sniffer (comme Fiddler/WireShark/Charles), donc un jeton dynamique est probablement la seule solution (recourir à HTTPS/AMF et tout ce qui est palliatif pour sécuriser le transport couche sera juste un supplément, comme votre jeton principal serait toujours en clair.)

0

détrompez-vous ce que vous faites. Vous lisez un fichier SWF à partir du disque et le sert à l'utilisateur. Je me demande pourquoi le système de fichiers prend les "paramètres" ajoutés sans erreur. Ensuite, le flash est exécuté sur la machine de l'utilisateur. Où sont les arguments, maintenant? Vous ne les avez pas envoyés à l'utilisateur, n'est-ce pas? Vous n'avez pas modifié le fichier flash, n'est-ce pas? Donc, oui, vous n'avez essentiellement pas de chance ... Vous faites seulement la même chose qu'un serveur web, mais plus lentement. Cependant, ce que vous pouvez faire, utilisez une approche de script inter-site. Envoyer le cadre HTML avec une "phrase de passe" générée aléatoirement. Vous stockez la "phrase de passe" quelque part, comme une base de données. Ensuite, utilisez un code tel que:

<embed src="/path/to/php/proxy.php?pass=dfkhslrufbeuip'/> 

Seulement jamais servir le fichier si elle est une phrase de passe valide.

Ok le flash est pas protégé, l'utilisateur peut toujours « enregistrer sous » et jouer seul. Mais au moins vous n'avez pas la peine de quelqu'un qui monopolise votre bande passante d'un site différent ...

+0

En fait, vous pouvez passer la phase de passe à clignoter et laisser l'authentification flash contre votre serveur. (Dans l'application flash.) Mais ma connaissance AS ne suffit pas ici ... – rioki

+0

Je ne suis pas en train de lire un fichier SWF à partir du disque. Je le lis sur HTTP. – blockhead