Sécurisation de répertoire
0x1gene
-
avion-f16 Messages postés 20368 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 20368 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je sollicite votre expérience en développement web car j'ai un problème et je ne voi pas du tout comment faire pour le résoudre;
En gros je suis en train de réaliser un site de téléchargement de vidéos et Streaming sur les activités de mon club.
jusque là pas de problèmes, les vidéos sont dans un dossier "video" (très original ^^).
Le problème c'est que je veux qu'elles soit accessible que par les membres et que chaque membre puisse consulté que certaines vidéo:
Exemple: membre Luc a droit à la vidéo A et C et membre Paul à droit à la vidéo B
sur la page, je fais mes vérification en php donc pas de problèmes, mais rien n'empêche Paul d'allé a l'adresse http://monsite/video/videoA.avi pour avoir accès au autres vidéos du site !
Pour résumer je voudrais que mes vidéos puisse être lu et téléchargé que depuis ma page php qui fais les vérifications de droits...
Je pencherai vers le htacces mais je ne sais pas si c'est une bonne idée ...
Je sollicite votre expérience en développement web car j'ai un problème et je ne voi pas du tout comment faire pour le résoudre;
En gros je suis en train de réaliser un site de téléchargement de vidéos et Streaming sur les activités de mon club.
jusque là pas de problèmes, les vidéos sont dans un dossier "video" (très original ^^).
Le problème c'est que je veux qu'elles soit accessible que par les membres et que chaque membre puisse consulté que certaines vidéo:
Exemple: membre Luc a droit à la vidéo A et C et membre Paul à droit à la vidéo B
sur la page, je fais mes vérification en php donc pas de problèmes, mais rien n'empêche Paul d'allé a l'adresse http://monsite/video/videoA.avi pour avoir accès au autres vidéos du site !
Pour résumer je voudrais que mes vidéos puisse être lu et téléchargé que depuis ma page php qui fais les vérifications de droits...
Je pencherai vers le htacces mais je ne sais pas si c'est une bonne idée ...
A voir également:
- Sécurisation de répertoire
- Répertoire téléphonique gratuit - Télécharger - Bureautique
- Pourquoi certains contacts disparaissent de mon répertoire - Accueil - Guide Android
- La syntaxe du nom de fichier de répertoire ou de volume est incorrecte ✓ - Forum Windows 10
- Créer un répertoire alphabétique sur word - Forum Excel
- Répertoire démarrage windows 11 - Guide
4 réponses
Bonjour, je te conseille plutot d'utiliser les sessions.
Pour pouvoir les utiliser, toujours mettre en debut de page ceci:
cela permet de lancer le principe de session pour la page.
Ensuite, je te conseille d'avoir une base de donnée comprenant, une table avec t'est utilisateur et une autre table avec t'est videos.
Dans la table utilisateur, tu met le pseudo, le mot de passe ( convertie par md5 ou sha1 ou les deux :p) et le niveau d'acces (selon la forme que tu veux a bien reflechir suivant l'acces a t'est videos)
Dans la table videos, tu met le code de ta video et le niveau d'acces necessaire (suivant evidement le meme principe que pour user.
Dans ta page php accessible uniquement pour les connectes, tu fais un test entre le niveau d'acces de l'utilisateur (que tu as mis en session) et le niveau d'acces de t'est videos, seul celle qui ont le niveau correspondant peuvent passer et etre afficher.
Bien entendus, tu as compris que le plus dur vas être de trouver une methode de niveau d'acces.
je te propose deux possibiliter:
1) (qui correspond plus a ce que tu as ecrit) mettre les niveaux d'acces sous la forme 0-1-0-0-1 (chaque chiffre correspond alors a l'id (mysql) de la video la separation permet de faire un explode php et de recuperer le numeros pour l'id1 puis l'id 2 ensuite tu fais un test si l'acces est a 0 interdit si 1 autoriser (plus simple meme que ce qui est ecrit avant pour le test :p) par contre, il te faudras modifier manuellement chaque utilisateur afin de rajouter le niveau d'autorisation de la nouvelle video.
2) faire un systeme de pyramise pour t'est utilisateur, ceux du dessus peuvent voir les videos de leur niveau d'acces et celle des autres en dessous.
niveau 2 peut voir les videos de niveau 2, 1 et 0.
voila, apres a toit de trouver ton propre systeme.
Pour pouvoir les utiliser, toujours mettre en debut de page ceci:
session_start();
cela permet de lancer le principe de session pour la page.
Ensuite, je te conseille d'avoir une base de donnée comprenant, une table avec t'est utilisateur et une autre table avec t'est videos.
Dans la table utilisateur, tu met le pseudo, le mot de passe ( convertie par md5 ou sha1 ou les deux :p) et le niveau d'acces (selon la forme que tu veux a bien reflechir suivant l'acces a t'est videos)
Dans la table videos, tu met le code de ta video et le niveau d'acces necessaire (suivant evidement le meme principe que pour user.
Dans ta page php accessible uniquement pour les connectes, tu fais un test entre le niveau d'acces de l'utilisateur (que tu as mis en session) et le niveau d'acces de t'est videos, seul celle qui ont le niveau correspondant peuvent passer et etre afficher.
Bien entendus, tu as compris que le plus dur vas être de trouver une methode de niveau d'acces.
je te propose deux possibiliter:
1) (qui correspond plus a ce que tu as ecrit) mettre les niveaux d'acces sous la forme 0-1-0-0-1 (chaque chiffre correspond alors a l'id (mysql) de la video la separation permet de faire un explode php et de recuperer le numeros pour l'id1 puis l'id 2 ensuite tu fais un test si l'acces est a 0 interdit si 1 autoriser (plus simple meme que ce qui est ecrit avant pour le test :p) par contre, il te faudras modifier manuellement chaque utilisateur afin de rajouter le niveau d'autorisation de la nouvelle video.
2) faire un systeme de pyramise pour t'est utilisateur, ceux du dessus peuvent voir les videos de leur niveau d'acces et celle des autres en dessous.
niveau 2 peut voir les videos de niveau 2, 1 et 0.
voila, apres a toit de trouver ton propre systeme.
salut Japan-O-Fan ;)
j'ai bien compris ta réponse et c'est en partie ce que j'ai fait sauf que pour les accès, j'ai une table ou je regroupe les associations user-vidéo (car les vidéos sont individuelles et on ne peut pas grouper).
A ce niveau là mes accès sont bien protégé, ce que je redoute c'est qu'un membre passe outre ma protection php en rentrant directement l'URL de la vidéo, voir en utilisant un aspirateur de site :s
Je voudrais faire en sorte que la vidéo soit accessible que depuis ma page php...
je sais pas si tu vois le problème, c'est dur à expliquer :s
j'ai bien compris ta réponse et c'est en partie ce que j'ai fait sauf que pour les accès, j'ai une table ou je regroupe les associations user-vidéo (car les vidéos sont individuelles et on ne peut pas grouper).
A ce niveau là mes accès sont bien protégé, ce que je redoute c'est qu'un membre passe outre ma protection php en rentrant directement l'URL de la vidéo, voir en utilisant un aspirateur de site :s
Je voudrais faire en sorte que la vidéo soit accessible que depuis ma page php...
je sais pas si tu vois le problème, c'est dur à expliquer :s
il faut utiliser un htaccess
deny from all dans chaque dossier de vidéo
et c'est réglé , seul le serveur pourra accéder a ce dossier
par contre tu ne pourra plus proposer un lien classique vers la video .avi, il faudra que dans une page , tu fasse un include de cette video et donc que tu la visionne dans cette page et non plus avec un logiciel externe
deny from all dans chaque dossier de vidéo
et c'est réglé , seul le serveur pourra accéder a ce dossier
par contre tu ne pourra plus proposer un lien classique vers la video .avi, il faudra que dans une page , tu fasse un include de cette video et donc que tu la visionne dans cette page et non plus avec un logiciel externe
Salut.
1/ Laisse tes vidéos dans le dossier "video"
2/ Protège ce dossier en accès HTTP avec un .htaccess
3/ Crées un script PHP "get_movie.php" (par exemple) où tu vérifies si le membre est connecté : si oui, tu retournes la vidéo, sinon, tu affiches un erreur.
Exemple :
1/ Laisse tes vidéos dans le dossier "video"
2/ Protège ce dossier en accès HTTP avec un .htaccess
3/ Crées un script PHP "get_movie.php" (par exemple) où tu vérifies si le membre est connecté : si oui, tu retournes la vidéo, sinon, tu affiches un erreur.
Exemple :
<?php
session_start();
define('MOVIES_PATH', 'video/');
if(isset($_SESSION['membreID']) && isset($_GET['movieName'])) {
$file = MOVIES_PATH.$_GET['movieName'];
if (file_exists($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.0 401 Unauthorized');
echo 'Vous ne pouvez pas lire cette vidéo.';
}
?>L'adresse de la vidéo "/video/example.flv" sera donc "/get_movie.php?movieName=example.flv"
Salut, je n'ai pas compris à quoi servent tous les header(); :s
Demain je vais essayer de bidouiller mon htacces pour que mon dossier video soit consultable que depuis le protocole HTTP du serveur, et je vais voir si j'arrive toujours à feinter ma propre protection :S
Je test et je vous tiens au courant, merci pour votre aide ! ;)
Demain je vais essayer de bidouiller mon htacces pour que mon dossier video soit consultable que depuis le protocole HTTP du serveur, et je vais voir si j'arrive toujours à feinter ma propre protection :S
Je test et je vous tiens au courant, merci pour votre aide ! ;)
La fonction header() de PHP permet de modifier les entêtes HTTP. Ces entêtes servent à donner des informations sur le résultat de le requête et les données renvoyées : encodage, jeu de caractère, date, type (page Web, image, PDF, ...), taille, contrôler le cache, ...
« Demain je vais essayer de bidouiller mon htacces pour que mon dossier video soit consultable que depuis le protocole HTTP du serveur »
Justement, il ne faut pas le rendre accessible par HTTP.
Il suffit de créer un .htaccess dans ce dossier contenant ceci : Deny from all
« Demain je vais essayer de bidouiller mon htacces pour que mon dossier video soit consultable que depuis le protocole HTTP du serveur »
Justement, il ne faut pas le rendre accessible par HTTP.
Il suffit de créer un .htaccess dans ce dossier contenant ceci : Deny from all