Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2007, 10h14   #1
Invité de passage
 
Inscription : juin 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 5
Points : 2
Points : 2
Par défaut [Sécurité] Téléchargement et Sécurité

Bonjour!

Je cherche une méthode qui me permettrait à la fois de rendre innaccessible des fichiers textes générés par mon code php mais aussi de pouvoir les télécharger dans une autre section de ce site en php.

-Quelle technique employer pour les cacher?
-Quel genre de script mettre en place pour lancer un téléchargement?

Quelques précisions : on se logue sur mon site à l'aide d'un md5 et un démon surveille qu'il n'y a pas d'inactivité dans les 4 minutes suivant la connexion. je n'ai pas de gestion précise de login, et je ne suis pas encore calé sur les variables de sessions.


Merci pour vos réponses!

Dam
Damichou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 11h11   #2
Membre du Club
 
Inscription : octobre 2003
Messages : 66
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2003
Messages : 66
Points : 40
Points : 40
Envoyer un message via ICQ à TigrouMeow
Hello

Les variables de session il va falloir que tu jettes un oeil dessus, il faut que tu saches d'abord que quelqu'un est identifié. Ensuite tu peux utiliser un code de ce genre là :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (isset($_SESSION['access']) && $_SESSION['access'] > 0)
	{
		// Check filename
		$filename = "inaccessibledirectory/yourfile.txt";
	    if (empty($filename) || !file_exists($filename))
	        print "Error...";
	    // Create download file name to be displayed to user
	    $saveasname = basename($filename);
	    // Send binary filetype HTTP header
	    header('Content-Type: application/octet-stream');
	    // Send content-length HTTP header
	    header('Content-Length: '.filesize($filename));
	    // Send content-disposition with save file name HTTP header
	    header('Content-Disposition: attachment; filename="'.$saveasname.'"');
	    // Output file
	    readfile($filename);
	    // Done
	}
Dans ce code là, plus commun, la lecture d'un fichier est faite (d'un fichier dans un répertoire protégé avec un .htaccess par exemple), et ensuite renvoyé sur la sortie standard avec readfile. Dans ton cas, tu peux enlever tout ce qui concerne l'accès et la lecture du fichier, et faire directement un print "blablabla" à la place du readfile que je fais, sans oublier de renseigner le Content-Length correctement.

Hésites pas si t'as besoin de plus d'info
TigrouMeow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 11h21   #3
Invité de passage
 
Inscription : juin 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 5
Points : 2
Points : 2
Ca m'a l'air d'être une excellente base de travail...

Donc théoriquement, avec ce genre de code, je peux acceder a un fichier gardé par un .htaccess réglé en deny for all grace a php.

En vérifiant que la variable de session en cours est la bonne, il pourra lancer le téléchargement!

Classe ! merci beaucoup!

Sinon, en ce qui concerne le téléchargement en lui même, il sera lancé si je fais un print?
Damichou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 11h31   #4
Membre du Club
 
Inscription : octobre 2003
Messages : 66
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2003
Messages : 66
Points : 40
Points : 40
Envoyer un message via ICQ à TigrouMeow
Le téléchargement est lançé dès que le ReadFile est appelé, ou si tu fais un Print... en fait avec le "Content-Type: application/octet-stream", le navigateur sait que c'est un téléchargement qui va être fait, et ce n'est donc pas une page qui va être chargée et affichée. Normalement, si tu as un lien sur ton site vers une page qui contient ce script, la page courante ne sera pas changée, et par contre tu auras le navigateur qui te proposera le téléchargement du fichier
TigrouMeow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 11h40   #5
Invité de passage
 
Inscription : juin 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 5
Points : 2
Points : 2
Merci beaucoup pour cet éclairage!
là je commence à trouver des choses sympa pour bien comprendre les sessions!

En fait j'avais betement appliqué une méthode de login sécurisé que j'avais trouvé sur le web, et qui marche cependant, mais sans vraiment comprendre.
Celle choppe un nom d'user et une adresse ip tout en manipulant un "last_access". Par contre, aucune trace d'un simple acces, et d'ailleurs c'est là dessus que je suis en train de me documenter!

Encore merci!

Dam
Damichou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 12h13   #6
Membre du Club
 
Inscription : octobre 2003
Messages : 66
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2003
Messages : 66
Points : 40
Points : 40
Envoyer un message via ICQ à TigrouMeow
Pour la trace, le seul moyen je pense que c'est les sessions, mais rien ne t'empêche d'utiliser des sessions sans que l'utilisateur se soit identifié
TigrouMeow est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h48.


 
 
 
 
Partenaires

Hébergement Web