telecharger un fichier d'un serveur sur un autre ...

marionpo
Invité n'ayant pas de compte PHPfrance

28 janv. 2008, 18:37

(Je suis sous l'environnement Unix, serveur Apache)

Bonjour,

Je voudrais telecharger (copier?) un fichier distant sur mon serveur.
sachant que je connais l'url du fichier distant (http://www.unServeur.unePage.html) mais qu'elle n'est pas "vérifié" car c'est un utilisateur qui précise l'url (il peut donc taper tout et n'importe quoi..).
Ce fichier doit normalement être de type Html. J'aimerais le copier dans un fichier "file.html" en local sur ma machine.
- Quelles sont les précautions à prendre? ( Le fichier doit être de type Html comment le vérifier? Comment vérifier qu'il ne comporte pas de risque pour mon serveur? etc )
- Quelle est la procédure? (J'ai entendu parler de la fonction COPY (copy("http://www.unServeur.unePage.html", "fichier.html"))de php mais je n'arrive pas à l'utiliser..)

J'en vois déja qui vont ouvrir très grand leurs yeux :?
Il doit y avoir des histoires de droits pour accéder aux fichiers sur les serveurs, ainsi que des risques de télécharger un fichier dont je ne connais pas le contenu, j'en suis consciente... :roll:

Je remercie par avance ceux qui se pencherons sur mon problème!

Petit nouveau ! | 9 Messages

01 févr. 2008, 03:01

Bonsoir marion,

Tout dépend de l'usage que tu vas faire de ce fichier. Sera t'il visible directement par les visiteurs de ton site ensuite ? Vas tu l'inclure à partir d'un script PHP ?

Si tu l'inclus dans un script PHP par la suite, la personne en question pourra exécuter n'importe quel code PHP sur ton serveur (et par exemple, effacer tous tes fichiers).
Ou alors, si tu affiches la page HTML telle quelle à tes internautes, si le fichier contient un vilain javascript, il s'exécutera aussi chez le client.

Donc encore une fois tout dépend de l'usage que tu veux en faire par la suite, mais il me semble plus sage de 'parser' (traiter, modifier) le fichier avant de le rendre disponible à tes utilisateurs. Par exemple tu peux enlever les balises PHP ou Javascript, tu peux aussi transformer tout signe particulier en l'encodant (les < deviennent < par exemple..)

Pour récupérer le fichier, cela va dépendre de la configuration de ton hébergeur, si tu peux par exemple appeler un file_gets_content() sur une page d'un autre serveur (ou n'importe quelle autre alternative comme fopen()). Ou alors tu peux aussi exécuter les outils de ton serveur:

system("wget http://domain.ext/fichier.html");
ou
exec("lynx -source -dump http://domain.ext/fichier.html > ./lenomchoisi.html");

Bonne chance :)