Im construire une section "premium" de mon site et Im dans un besoin de donner accès au téléchargement de fichiers dans une télécommande directement (sur un serveur différent), aux utilisateurs avec des privilèges spéciaux (comptes stockés dans mysql db). Mon site est codé en php/mysql donc une solution php serait géniale.Comment protéger les fichiers téléchargeables dans un répertoire distant à partir d'utilisateurs non-premium (en php?)
Répondre
diriger tous les liens de téléchargement vers un fichier php qui fera tout le contrôle des informations d'identification.
vous pouvez appeler le fichier download.php
passe le long des paramètres via les cookies, obtenir, après, session, ou tout autre manière que vous vérifier les privilèges.
Une fois les informations d'identification vérifiées, vous pouvez envoyer un en-tête approprié.
si elle est une image, l'en-tête serait header("Content-type: image/jpeg");
Je suppose que vous possédez également ce serveur distant.
quelques liens utiles:
Je suis habitué à le faire dans ASP.NET où il est construit, mais ce article semble chronique votre situation exacte.
Comme @pxl dit, vous devez vérifier l'autorisation et la sortie du type MIME correct comme un en-tête HTML (comme il a dit: header("Content-type: image/jpeg");
)
En outre, une fois que vous avez fini avec cela, vous devrez le contenu de sortie réel du fichier et sa taille (en octets) en tant que tels:
header("Content-Length: ".filesize("FILENAME")*1.001);
/* The *1.001 puts a nice buffer on the filesize, I read about it online.
Browsers will stop downloading exactly at the Content-Length, but if they go
over, it's not a big deal at all. */
readfile("FILENAME");
die();
assurez-vous de stocker le fichier dans un répertoire qui n'est pas accessible depuis le web.
yup, et vous pouvez récupérer ce fichier à partir de n'importe où le serveur web a également accès. – pxl
Voici ce que je ferais:
Construit un PHP-SOAP-Sever sur le serveur distant B qui contient les fichiers. Chaque fois qu'un utilisateur déclenche un téléchargement sur votre serveur principal A connectez-vous au Serveur SOAP sur B et réservez un ticket à l'utilisateur en spécifiant une adresse IP et l'ID/chemin du fichier à télécharger.
serveur B va maintenant créer un TicketID (qui ne devrait être valable pour une durée limitée) pour le téléchargement et le retourner à A.
serveur A redirige l'utilisateur vers le serveur B fournissant le TicketID comme Paramètre GET
Le serveur B vérifie maintenant si le ticket a déjà été utilisé, a expiré ou si l'utilisateur provient de la mauvaise adresse IP. Si aucun d'eux ne s'applique, servir le fichier et marquer le ticket tel qu'il est utilisé.
Remarque: Sur le serveur B ne gardez pas en cours d'exécution PHP tout en servant le fichier, mais utiliser le X-Sendfile header à la place.Sinon, le téléchargement peut s'arrêter après l'exécution de PHP max.
- 1. Comment protéger un répertoire dans asp.net MVC?
- 2. Comment obtenir X fichiers les plus récents à partir d'un répertoire en PHP?
- 3. Comment puis-je protéger un répertoire en utilisant .htaccess?
- 4. Importation de modules Python à partir d'un répertoire distant
- 5. comment déconnecter un répertoire distant Windows?
- 6. Télécharger un fichier à partir d'un serveur distant ... (PHP)
- 7. Comment protéger les fichiers SWF de l'affichage?
- 8. Gestion des retards lors de la récupération de fichiers à partir du serveur distant en PHP
- 9. Comment protéger un répertoire par mot de passe tout en donnant accès aux utilisateurs
- 10. Méthode préférée pour copier des fichiers JPG à partir d'un serveur distant en utilisant PHP
- 11. Récursivement PUT fichiers à un serveur distant en utilisant FTP
- 12. incluant un fichier distant en PHP
- 13. Comment synchroniser le répertoire local avec le répertoire ftp distant?
- 14. Comment obtenir un NSarray de tous les noms de fichiers dans un répertoire sur un serveur distant?
- 15. Comment lister les fichiers dans un répertoire statique?
- 16. Comment déplacer tous les fichiers mp3 dans un seul répertoire?
- 17. Obtenir une liste de tous les fichiers dans un répertoire
- 18. Comment faire quelque chose à tous les fichiers dans un répertoire en utilisant bash?
- 19. Comment protéger les DLL?
- 20. phpmyadmin - liste les fichiers dans le répertoire
- 21. LINUX: Lien tous les fichiers d'un répertoire à un autre
- 22. Monter un système de fichiers distant à l'aide de SSHFS
- 23. Affichage de fichiers dans un dossier FTP distant à partir d'une partie Web
- 24. Comment puis-je ajouter un préfixe à tous les noms de fichiers dans un répertoire?
- 25. Comment protéger un répertoire virtuel avec un mot de passe dans IIS7
- 26. Connectez-vous à une base de données d'accès dans un répertoire distant en utilisant dao (VB6)
- 27. Comment appeler un EJB distant à partir d'un client autonome
- 28. Comment définir un mot de passe pour protéger les fichiers et les répertoires
- 29. Comment protéger les champs d'objet dans Rebol?
- 30. php inclus dans les fichiers-répertoires html
Avec cette solution, veillez à protéger le téléchargement du fichier en tapant directement l'URL dans la barre d'adresse. Par exemple, placez les fichiers protégés dans un répertoire situé à l'extérieur de la racine du site Web ou accédez aux directives à httpd.conf. – xanadont
et si c'est sur un autre serveur de toute façon, vous pouvez créer le fichier ou récupérer le fichier à télécharger de différentes façons. Rappelez-vous juste que vous ne serez pas en mesure de se défendre contre les téléchargeurs les plus déterminés. – pxl