Bloquer les téléchargements directs
Résolu/Fermé
gavroch74
Messages postés
65
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
12 mars 2011
-
22 août 2010 à 16:26
krakra - 2 mai 2014 à 18:15
krakra - 2 mai 2014 à 18:15
A voir également:
- Bloquer les téléchargements directs
- Bloquer les pubs sur youtube - Accueil - Streaming
- Sites de telechargements - Accueil - Outils
- Bloquer sur messenger - Guide
- Comment savoir si on est bloqué sur Messenger ou Facebook ? - Guide
- Bloquer cellule excel - Guide
10 réponses
avion-f16
Messages postés
19250
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 décembre 2024
4 505
22 août 2010 à 18:46
22 août 2010 à 18:46
Salut.
« Est il possible de permettre un téléchargement sans pour autant que le lien soit visible »
Je ne comprends pas très bien ...
Si le lien n'est pas visible, comment l'utilisateur doit-il faire pour télécharger le fichier ?
Pour moi, un "téléchargement direct", c'est un lien pointant vers le fichier.
Par exemple, sur un forum, tu poses un lien vers le fichier au lieu d'utiliser le chemin vers la page de téléchargement.
Si tu veux éviter ça, il va falloir passer par un script PHP. Celui-ci devra faire le lien entre le fichier et l'utilisateur. Le fichier devra être dans un dossier inaccessible via HTTP, c'est le script PHP qui le lira et qui enverra son contenu à l'internaute. Tu peux vérifier la provenance du visiteur avec $_SERVER['HTTP_REFERER'].
Voilà l'architecture :
/download.php?file=fichier1.rar
/download.php?file=fichier2.pdf
/download.php?file=fichier3.zip
Dans views/errors/unauthorized_download.php, tu peux expliquer pourquoi l'utilisateur ne peut pas télécharger le fichier ou le rediriger vers la page de téléchargement (en PHP : location('/telechargements.html'); )
« Est il possible de permettre un téléchargement sans pour autant que le lien soit visible »
Je ne comprends pas très bien ...
Si le lien n'est pas visible, comment l'utilisateur doit-il faire pour télécharger le fichier ?
Pour moi, un "téléchargement direct", c'est un lien pointant vers le fichier.
Par exemple, sur un forum, tu poses un lien vers le fichier au lieu d'utiliser le chemin vers la page de téléchargement.
Si tu veux éviter ça, il va falloir passer par un script PHP. Celui-ci devra faire le lien entre le fichier et l'utilisateur. Le fichier devra être dans un dossier inaccessible via HTTP, c'est le script PHP qui le lira et qui enverra son contenu à l'internaute. Tu peux vérifier la provenance du visiteur avec $_SERVER['HTTP_REFERER'].
Voilà l'architecture :
- downloads/ - - fichier1.rar - - fichier2.pdf - - fichier3.zip - - .htaccess - download.php - telechargements.htmlLe contenu du .htaccess est simple :
Deny from allpour download.php :
<?php /* Configuration */ define('FILES_PATH', 'downloads/'); define('ALLOWED_HOST', 'example.com'); /* Script */ if(isset($_SERVER['HTTP_REFERER']) && isset($_GET['file']) && file_exists(FILES_PATH.$_GET['file'])) { if(preg_match('#^http://'.ALLOWED_HOST.'#i',$_SERVER['HTTP_REFERER'])) { $file = FILES_PATH.$_GET['file']; header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } else { header('HTTP/1.1 403 Forbidden'); include 'views/errors/unauthorized_download.php'; } } else { header('HTTP/1.1 403 Forbidden'); include 'views/errors/unauthorized_download.php'; } ?>Pour faire les liens (telechargements.html) :
/download.php?file=fichier1.rar
/download.php?file=fichier2.pdf
/download.php?file=fichier3.zip
Dans views/errors/unauthorized_download.php, tu peux expliquer pourquoi l'utilisateur ne peut pas télécharger le fichier ou le rediriger vers la page de téléchargement (en PHP : location('/telechargements.html'); )
gavroch74
Messages postés
65
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
12 mars 2011
13
23 août 2010 à 19:51
23 août 2010 à 19:51
Ok !!! Très bien je comprend beaucoup mieux, merci pour ces infos!
Pour mon site j'ai appris doucement le html puis j'ai évoluer en xhtml/css
je compte maintenant tout refaire avec du php (pour rendre le site plus vivant et agréable) mais c'est un langage avec le quel j'ai un peu plus de mal a me familiariser.
Pour le moment je suis sur le site du zéro pour tenter d'apprendre et me familiariser avec le php, mais j'aime les défis et comprendre les conseilles que l'on me donne donc si tu as un bon lien pour apprendre les session je t'en serrai reconnaissent ?!!
Pour mon site j'ai appris doucement le html puis j'ai évoluer en xhtml/css
je compte maintenant tout refaire avec du php (pour rendre le site plus vivant et agréable) mais c'est un langage avec le quel j'ai un peu plus de mal a me familiariser.
Pour le moment je suis sur le site du zéro pour tenter d'apprendre et me familiariser avec le php, mais j'aime les défis et comprendre les conseilles que l'on me donne donc si tu as un bon lien pour apprendre les session je t'en serrai reconnaissent ?!!
gavroch74
Messages postés
65
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
12 mars 2011
13
23 août 2010 à 11:35
23 août 2010 à 11:35
Merci avion-f16 pour cette réponse constructive !!!
Je suis très novice en php et je vais tenter de comprendre et d'appliquer tous ça !
Je vais me replonger dans les cours du zéro :)
Merci encore et je tien au courant de l'évolution !!
Je suis très novice en php et je vais tenter de comprendre et d'appliquer tous ça !
Je vais me replonger dans les cours du zéro :)
Merci encore et je tien au courant de l'évolution !!
gavroch74
Messages postés
65
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
12 mars 2011
13
23 août 2010 à 13:17
23 août 2010 à 13:17
Un grand merci a toi !! ca marche super bien et simple a réaliser !!
Merci encore et a bientôt :)
Merci encore et a bientôt :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello,
tu peux aussi utiliser les sessions pour que la page précédente pose un jeton en session et que la page de téléchargement vérifie ce dernier plutôt que le référer. En effet, ce dernier peut être usurpé
C'est donc plus sur, tu obliges ainsi à passer par la page que tu veux avant (tu peux même imaginer que la page A donne un jeton pour tel doc alors que la page B en donne un pour tel autre...)
tu peux aussi utiliser les sessions pour que la page précédente pose un jeton en session et que la page de téléchargement vérifie ce dernier plutôt que le référer. En effet, ce dernier peut être usurpé
C'est donc plus sur, tu obliges ainsi à passer par la page que tu veux avant (tu peux même imaginer que la page A donne un jeton pour tel doc alors que la page B en donne un pour tel autre...)
gavroch74
Messages postés
65
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
12 mars 2011
13
23 août 2010 à 15:02
23 août 2010 à 15:02
"tu peux aussi utiliser les sessions pour que la page précédente pose un jeton en session et que la page de téléchargement vérifie ce dernier plutôt que le référer. "
Utiliser les sessions ? sauf si je me trompe une session = Login/mot de passe
style pour les forums , or mon site est un site accessible a tous donc pas de session mais peut-être que je me trompe j'ai tout a apprendre ;)
"En effet, ce dernier peut être usurpé"
Comment ca usurpé ?
Utiliser les sessions ? sauf si je me trompe une session = Login/mot de passe
style pour les forums , or mon site est un site accessible a tous donc pas de session mais peut-être que je me trompe j'ai tout a apprendre ;)
"En effet, ce dernier peut être usurpé"
Comment ca usurpé ?
Une session c'est beaucoup plus vaste que ça. Lorsqu'un visiteur arrive sur ton site, tu peux ouvrir une session sur le serveur. C'est à dire que tu crées un environnement associé à la visite et dans lequel tu peux mettre des variables.
Lorsque le visiteur demande une seconde page du site, tu peux retrouver la session et donc les informations que tu avais précédement stoquées. Comme la session est associée à un visiteur, tu peux sur une page mémoriser qu'il est passé sur le site et ensuite, sur la page de téléchargement, vérifier s'il est passé avant sur telle ou telle page avant d'autoriser le téléchargement...
Les sessions sont utilisées pour les forums, en effet, lorsque tu t'identifies, tu fournis ton login/mdp et le serveur mémorise que tel visiteur a fourni les identifiants de tel compte et ensuite, grace à la mécanique décrite plus haut, tu es "reconnu" d'une page à l'autre
Pour le référer, c'est une info passée par le navigateur au serveur. Il peut envoyer ce qu'il veut et c'est invérifiable. Il peut faire croire venir de telle page alors que c'est faux
Lorsque le visiteur demande une seconde page du site, tu peux retrouver la session et donc les informations que tu avais précédement stoquées. Comme la session est associée à un visiteur, tu peux sur une page mémoriser qu'il est passé sur le site et ensuite, sur la page de téléchargement, vérifier s'il est passé avant sur telle ou telle page avant d'autoriser le téléchargement...
Les sessions sont utilisées pour les forums, en effet, lorsque tu t'identifies, tu fournis ton login/mdp et le serveur mémorise que tel visiteur a fourni les identifiants de tel compte et ensuite, grace à la mécanique décrite plus haut, tu es "reconnu" d'une page à l'autre
Pour le référer, c'est une info passée par le navigateur au serveur. Il peut envoyer ce qu'il veut et c'est invérifiable. Il peut faire croire venir de telle page alors que c'est faux
avion-f16
Messages postés
19250
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 décembre 2024
4 505
23 août 2010 à 19:57
23 août 2010 à 19:57
Un système de jeton est évidemment plus sécurisé, mais dans ce cas, ça ne sert à rien. Perso, je ne perdrais pas mon temps à écrire une requête HTTP à la main juste dans le but d'éviter de passer par une page de téléchargement. Le système avec le referer est largement suffisant, dans ce cas.
gavroch74
Messages postés
65
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
12 mars 2011
13
23 août 2010 à 19:58
23 août 2010 à 19:58
C'est bien ce que je pensais aussi mais c'est toujours bon a connaitre !