web-dev-qa-db-fra.com

Quelle est la méthode la plus sécurisée de téléchargement d'un fichier?

La société pour laquelle je travaille a récemment été frappé avec beaucoup d'injection d'en-tête et le téléchargement de fichiers exploite sur les sites que nous hébergeons et alors que nous avons résolu le problème en ce qui concerne les attaques par injection d'en-tête, nous avons encore à obtenir les exploits de téléchargement sous contrôle.

Je suis en train de mettre en place une série plug-and-type de jeu de scripts de téléchargement pour une utilisation en interne qu'un concepteur peut copier dans leur structure du site, modifier quelques variables et ont une forme de téléchargement prêt à aller sur leur site. Nous cherchons à limiter notre exposition autant que possible (nous avons déjà fermé vers le bas fopen et les commandes Shell).

Je l'ai cherché sur le site pour la dernière heure et a trouvé beaucoup de réponses différentes traitant des méthodes spécifiques qui reposent sur des sources extérieures. Qu'est-ce que vous pensez tous est la meilleure solution de script seule qui est assez spécifique à utiliser comme une méthode fiable de protection? De plus, je voudrais essayer de garder la langue limitée à PHP ou pseudo-code si possible.

Edit: J'ai trouvé ma réponse (posté ci-dessous) et, alors qu'il ne fait usage de la commande Shell exec (), si vous bloquez les fichiers scripts en cours de téléchargement (cette solution qui fait très bien) , vous ne rencontrerez aucun problème.

37
Stephen Walcher

La meilleure solution, IMHO, consiste à placer le répertoire contenant les fichiers téléchargés en dehors de l'environnement "Web" et à utiliser un script pour les télécharger. De cette manière, même si quelqu'un télécharge un script, il ne peut pas être exécuté en l'appelant à partir du navigateur et vous n'avez pas à vérifier le type de fichier téléchargé.

38
andy.gurin

Utilisez et configurez-la durci-php Créez un script uni à l'aide de mobile_uploaded_file et le $ _ fichiers superglobal . Le script le plus simple, le plus sûr qu'il sera (au moins, aussi sûr que l'exécution PHP)

1
Vinko Vrsalovic