Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
J'ai un petit script PHP qui permet de connaître le statut (connecté ou non) pour une application Skype en Flash.
Voici le script :
Mon hébergeur me dit que ce script n'est pas bon car, pour des raisons de sécurité, l'interprétation des URL comme étant des fichiers est désactivée, la fonction file_get_contents doit donc bien ouvrir un fichier local et non pas faire appel à une URL externe.
Il me conseille d'utiliser plutôt la fonction curl.
J'ai parcouru quelques tutoriels concernant cette fonction mais j'avoue être perdu ...
Que devrais-je faire dans ce petit script pour que n'apparaisse plus le problème de sécurité ?
Merci d'avance.
Dominique,
Hors ligne
Euh déjà vérifier ce qu'il y a dans la variable et être sûr qu'il n'y a que ce que tu souhaite.
Prenons pas exemple ton code étant dans une page nommée page.php
Que se passe-t-il si j'appelle la page comme ceci : http://tonsite.com/page.php?proxy_url=h … script.php
On ne sait pas ce qui pourrait se faire, mais n'importe qui pourrait faire ce qu'il veut justement...
Hors ligne
Bonjour xTG,
C'est exactement ce que m'a dit mon hébergeur. Il m'a donné aussi un exemple (tout comme toi) de hacking.
Donc, je réitère ma question : comment utiliser curl dans ce script pour pouvoir faire appel à une URL externe.
La variable proxy_url ne contient pas de code malicieux, c'est simplement pour faire fonctionner une application Skype en Flash (qui permet de voir si l'interlocuteur est connecté ou non, de lancer une discussion ou un appel vocal Skype) depuis un site web.
Si vraiment, vous pressentez que cette variable peut être dangereuse, je peux demander à l'auteur ce que fait exactement proxy_url.
Dans le fichier fla, il n'y a pas d'appel ou d'accès à cette variable en tout cas.
Bien à vous et merci.
Dominique,
Hors ligne
re bonjour xTG,
Voilà où intervient la variable proxy_url (dans la classe de l'application Flash) :
req.data = new URLVariables("proxy_url=http://mystatus.skype.com/" + skypeName + ".xml");
Il y a donc demande d'un fichier xml du serveur Skype.
On peut d'ailleurs essayer : http://mystatus.skype.com/mon_identifiant_skype.xml et on peut ainsi voir via cette URL si mon_identifiant_skype est connecté ou non ...
Visiblement, il n'y a rien de bien méchant dans cette variable proxy_url ;-)
Bien à toi.
Dominique,
Hors ligne
Dans ce cas vérifies que le nom de domaine dans la variable est bien http://mystatus.skype.com
Si ton hébergeur t'embête encore avec cela c'est qu'ils ne font vraiment confiance à personne...
Hors ligne
Bonjour,
J'ai donc envoyé à mon hébergeur ce que contenait la variable proxy_url et il n'en démord pas, le bougre ;-)
C'est bien une URL externe, vous devez donc utiliser des fonctions prévuées pour l'accès externe comme les fonctions CURL et non pas les fonctions "fichiers".
On en est donc de nouveau au point de départ; je ne peux pas utiliser file_get_contents mais curl ... mais comment dans ce sript :
Merci d'avance.
Dominique,
Hors ligne
Bonjour et merci encore xTG,
Le script PHP modifié :
par apport à celui d'origine :
Malheureusement, le script modifié n'affiche rien de cohérent.
Où serait l'erreur ?
Merci d'avance.
Dominique,
Hors ligne
Qu'appelles-tu par rien de cohérent ? Des caractères bizarres ?
Peut être que la méthode du curl possède son propre jeu d'encodage de caractères et qu'il faut lui spécifier un dans une fonction pour ne pas avoir celui par défaut.
Hors ligne
Bonsoir xTG,
Quand je dis que le script modifié n'affiche rien de cohérent, cela veut simplement dire que l'application Skype en Flash ne reconnait pas si je suis connecté ou non sur Skype ... il garde le statut 'online' même si je suis déconnecté. Il n'y a pas (apparemment) de souci d'encodage de caractères.
Je suis certain que sur un serveur qui accepte file_get_contents, l'application Flash fonctionne très bien.
Merci.
Hors ligne
Regardes plutôt alors s'il n'y a pas un cache ou un truc du genre avec cette méthode.
Par exemple dans la documentation j'ai trouvé cela qui fait un peu tilter :
CURLOPT_COOKIESESSION TRUE pour marquer ceci comme un nouveau cookie "session". Cela forcera libcurl à ignorer tous les cookies qui sont prêts à être chargés qui sont des "cookies de session" provenant des sessions antérieures. Par défaut, libcurl enregistre et charge toujours tous les cookies, indépendamment s'ils sont des cookies de session ou pas. Les cookies de session sont des cookies sans date d'expiration et existeront que pour cette "session" seulement.
CURLOPT_FORBID_REUSE TRUE pour forcer la connexion à se fermer explicitement lorsque le processus est terminé et ne sera pas mise en cache pour être réutilisée.
CURLOPT_FRESH_CONNECT TRUE pour forcer à utiliser une nouvelle connexion au lieu de celle en cache.
Dernière modification par xTG (16-02-2010 21:06:14)
Hors ligne
Bonsoir xTG,
Voici le script avec ce que tu me soumets :
Mais, hélas, cela ne change rien ...
J'ai aussi changé la variable "proxy_url" en mettant le lien en dur http://mystatus.skype.com/mon_identifiant_skype.xml
mais cela ne change rien non plus. Plus fort, si je mets n'importe quoi à la place de "proxy_url" (exemple : proxyyy_url), le résultat est identique donc visiblement le script ne va même pas à la ligne curl_setopt($ch, CURLOPT_URL, "proxy_url");
Je dois bien reconnaître que je suis perdu !
<soupir>
Dominique,
Hors ligne
Pages :: 1