2011-11-14 1 views
0

Je travaille sur un lecteur RSS en utilisant SimplePie.Existe-t-il un moyen sûr de mettre en cache et redimensionner des images distantes avec PHP?

Je veux tirer des flux RSS et afficher des articles avec des vignettes. J'utilise RSS Enclosures et analysera plus tard RSS <articles> pour <img>.

Existe-t-il un moyen sûr de télécharger ces images distantes sur mon serveur afin que je puisse les mettre en cache et les redimensionner?

J'ai quelques idées sur la façon dont cela peut être fait avec cURL par exemple, mais je suis intéressé par la sécurité. Je sais que je peux restreindre par extension de fichier et je pourrais probablement regarder le type MIME, mais je veux juste savoir si cela est faisable/sûr. Si oui, quelles mesures devraient être prises pour s'assurer qu'il n'y a pas de vulnérabilités.

+1

De quels soucis de sécurité particuliers êtes-vous inquiet? – Homer6

+0

Probablement XSS ou simplement l'exécution de n'importe quel code d'un flux RSS malveillant qui trompe mon application en pensant que ses scripts sont des images. Je sais que SimplePie est assez bon pour éviter XSS, mais il y a un risque pour la sécurité de télécharger un fichier distant arbitraire vers un emplacement public sur mon serveur. – Matt

Répondre

2

Redimensionner Images Avec gd ou imagemagick

ou vous pouvez le faire de cette manière Vérifiez les Link

+0

+1: modifier le cotment en utilisant un tel outil devrait supprimer tout contenu malveillant - ne stockez simplement pas l'image brute dans la racine de votre document. – symcbean

+0

D'accord, il n'y a aucun risque à ouvrir un fichier distant avec GD ou imagemagick, tant que je ne stocke pas l'original? Aussi, je vais jeter un coup d'oeil à ce lien. Je ne suis pas aussi préoccupé par l'écriture de ce que je suis avec la sécurité, car j'ai une bonne compréhension de la sécurité, mais je ne suis pas un expert. – Matt

0

problèmes de sécurité Posible suivantes:

  • Exécution de script distant. D'une manière ou d'une autre, vous téléchargez un script php au lieu d'une image et le serveur l'exécute lors d'un appel ultérieur à cette image. Solution: dans n'importe quel serveur Web, vous pouvez configurer le répertoire de téléchargement afin qu'aucun script ne puisse y être exécuté. Et n'oubliez pas d'ajouter l'extension appropriée aux images (mieux choisir dans la liste, ne pas faire confiance aux types mime). XSS sur le client lisant le RSS. Vous téléchargez une image. Mais il s'agit d'être un javascript.

Solution: assurez-vous d'insérer un lien vers cet imgae dans l'étiquette <img src"...">. Le script ne serait pas exécuté à partir de la balise img. De plus, le redimensionnement de l'image via GD ou Imagic gâchera certainement n'importe quel js à l'intérieur, s'il y en avait un.

+0

Merci pour la contribution, mais je pense que j'ai la deuxième partie couverte. En outre, il est possible d'exécuter un script à partir de l'attribut src d'une image, donc je ne suis pas sûr que ce soit sûr à 100% par lui-même ([link] (http://ha.ckers.org/xss.html)). Bien sûr, la pointe sur l'utilisation de GD ou imagemagick semble utile. – Matt

Questions connexes