2010-06-03 4 views
1

Bien que je me rende compte qu'il existe différentes approches pour sécuriser le processus de téléchargement, je suis toujours confus quand il s'agit de principes de base. Je souhaite autoriser les utilisateurs à télécharger tout type de fichier qu'ils souhaitent, mais veillez à la sécurité de mon application. Donc ma question est:Est-ce que le dossier uploads en dehors de 'public_html' est suffisant pour protéger mon application contre les téléchargements malveillants?

Est-il suffisant de stocker les fichiers avec leurs noms d'origine dans le dossier «uploads» en dehors de «webroot» et de les récupérer via un script download.php?

Si ce n'est pas assez sécurisé, s'il vous plaît pointez-moi dans la bonne direction, ou suggérer des mesures supplémentaires que je devrais prendre pour le rendre sûr. Merci.

Répondre

1

Non, ce n'est pas suffisant. Lorsque vous sauvegardez le fichier téléchargé, vous devez vous assurer qu'il ne se passe rien de malveillant (par exemple, si le "nom d'origine" du fichier était "../quelque part ailleurs", il pourrait être possible d'écraser un autre fichier, y compris un script PHP sous public_html, ce qui permettrait alors à un pirate d'obtenir un niveau d'accès plus élevé). Il est probablement plus sage de générer un nom aléatoire ou au moins de désinfecter le nom de fichier original avant de l'utiliser. De la même manière, download.php ne doit pas être "trompé" dans la récupération d'un fichier qui est en dehors du répertoire de téléchargement.

0

Cela dépend de ce que vous entendez par "téléchargements malveillants". Comme le suggère Artelius, même si vous avez un répertoire dédié - ET assurez-vous que vous nommez les fichiers en utilisant le nom de base ($ uploaded_name), il existe toujours un potentiel de déni de service d'attaque ou d'empoisonnement de données. Générer un nom unique pour le fichier et stocker le nom d'origine ailleurs serait un peu plus sûr. En supposant qu'il n'y ait pas de vulnérabilités ailleurs dans votre code, cette approche devrait empêcher votre code de site d'être compromis - mais il fournit une excellente ressource pour quelqu'un qui tente d'attaquer un site tiers de façon anonyme - s'il peut déclencher une télécommande. depuis votre site De plus, vous n'avez pas dit comment protéger vous-même ni vos utilisateurs légitimes des utilisateurs qui téléchargent des fichiers infectés par des virus, du contenu volé et du contenu qui peut être considéré comme de la contrebande à certains endroits (par exemple porno).

C.

+0

Pourriez-vous élaborer un peu plus sur la façon dont ils pourraient déclencher une distance incluent de mon site. Comment cela serait-il possible? Merci. Pour le reste, les utilisateurs auront essentiellement accès uniquement à leurs propres fichiers, donc je ne pense pas que les virus soient un problème. Chaque utilisateur aura son propre dossier dans "uploads" et le nom de son dossier sera généré aléatoirement. – ababa

Questions connexes