2010-01-08 8 views
0

J'utilise la fonction header de PHP pour envoyer le fichier au navigateur avec un petit code. Son travail bien et je l'ai ainsi que si quelqu'un le demande avec un referer autre que mon site il redirige vers une page en premier. Malheureusement, cela ne fonctionne pas avec le gestionnaire de téléchargement Internet.Comment puis-je protéger mon site contre les virus?

Ce que je veux savoir, c'est comment les sites rabidshare et 4shared font cela.

+1

Je ne comprends pas ce que les sites que vous mentionnez font que vous voulez émuler. Est-ce que vous essayez d'arrêter le hotlinking ou est-ce autre chose? J'aurais bien que quelque chose (cookie de session?) Soit passé à un gestionnaire de téléchargement mais je ne sais pas. Il y a plusieurs façons de gérer cela, mais cela dépend de ce que vous voulez et exactement comment les gestionnaires travaillent. – Draemon

Répondre

2

Vous pouvez utiliser des sessions pour vous assurer que le téléchargement est demandé par un utilisateur valide.

2

Tous les navigateurs/logiciels pouvant afficher des pages Web n'enverront pas de référent à votre serveur. Certains sites créeront une "empreinte digitale" de navigateur, généralement hachée, qui pourrait être Referer, User-Agent et quelques autres en-têtes reliés ensemble pour créer un identifiant unique pour cet utilisateur et restreindre ainsi l'accès tel que décrit.

Bien sûr, j'ai peut-être complètement raté le point de votre message!

2

Un motif de conception typique utilise un contrôleur frontal pour avoir un seul point d'entrée pour toutes les demandes. En ayant un contrôleur frontal, vous pouvez contrôler exactement ce que le client voit.

Vous pouvez configurer ceci dans Apache pour que toutes les demandes passent par un seul fichier (cela fait un moment que je l'ai fait parce que je me concentre maintenant sur Java). Je pense que vous auriez besoin de regarder la documentation pathinfo pour Apache.

Cela peut nécessiter un changement important dans le reste du code de votre application. Mais, le code sera plus sûr et maintenable à long terme.

J'ai utilisé des images et d'autres fichiers binaires à travers ce modèle. Cela m'a permis de vérifier facilement que les utilisateurs étaient authentifiés avant de leur envoyer le fichier. L'obscurcissement n'est pas une question de sécurité, donc si vous comptez dissimuler votre URL, un attaquant peut être retardé, mais ce n'est qu'une question de temps.

Walter

1

Le problème est probablement que l'envoi de fichiers par script php (avec les en-têtes que vous avez mentionné) ne prend pas en charge à partir du fichier à télécharger certaine position. Les gestionnaires de téléchargement utilisent cette fonctionnalité pour télécharger le fichier en utilisant plusieurs threads simultanés (en supposant que le serveur donne un thread à une certaine vitesse).

Pour un petit projet, je recommande de faire une copie du fichier avec un nom de fichier unique juste pour le temps de téléchargement et de rediriger l'utilisateur vers ce fichier copié. De cette façon, il obtient des fonctionnalités de téléchargement de serveur complet et il ne charge pas le processeur comme le fait php. Inconvénients - plus d'espace disque requis et nettoyage du répertoire de téléchargement.

Questions connexes