Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 28/12/2010, 12h33   #1
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Par défaut Chiffrer des fichiers

Bonjour,

je vous avoue, tout de suite, que je ne suis pas sur d'avoir choisi le bon endroit pour poser ma question.

je suis en ce moment en stage dans une boite qui met un fort accent sur la sécurité de ses données. Elle stocke notamment des fichiers pdf sur son serveur.

L'application qui permet de déposer, de lire et de télécharger ces fichiers est en php.

La boîte souhaiterait que lors du dépot d'un fichier celui si soit crypter et que lors de la lecture il ne le soit plus et lorsqu'il est télécharger, il faudrait qu'il soit lisible seulement si l'application est lancé.

Une solution intermédiaire est acceptable pour eux pourrait être que le fichier soit crypter sur le serveur et que lors de son téléchargement l'utilisateur puisse lui donner un mot de passe.

Le problème c'est que j'ai très peu de connaissance dans le domaine de la sécurité et je ne vois pas comment je peux réaliser l'une ou l'autre des solutions.

Autre chose, qui peut avoir son importance, plusieurs personnes peuvent avoir accès à un même fichier.

En espérant, que vous pourriez me donner quelques pistes, merci par avance.
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 13h58   #2
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
il faudrait qu'il soit lisible seulement si l'application est lancé
La comme ça je te dirais que c'est pas possible. Une fois la page affichée , le script n'existe plus , le process est mort. De plus une fois un pdf affiché rien n'empêche de l'enregistrer pour le consulter plus tard.

Citation:
La boîte souhaiterait que lors du dépot d'un fichier celui si soit crypter et que lors de la lecture il ne le soit plus et lorsqu'il est télécharger
Je te donne que des pistes théoriques , je n'ai jamais testé :
- https tout le temps , ainsi le transfert est sécurisé
- Une fois le fichier sur le serveur l'ouvrir avec php , lire le contenu binaire et crypter ce contenu avec un truc du genre AES.
- QUand un utilisateur veux un pdf : décrypter le fichier , et fournir le contenu via readfile().
grunk est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 28/12/2010, 17h42   #3
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Citation:
Citation:
Citation:
il faudrait qu'il soit lisible seulement si l'application est lancé
La comme ça je te dirais que c'est pas possible. Une fois la page affichée , le script n'existe plus , le process est mort. De plus une fois un pdf affiché rien n'empêche de l'enregistrer pour le consulter plus tard.
Oui, je pense aussi.

Pour tes pistes, je vais regarder un peu. Merci en tout cas.

Si d'autre ont des idées, elles sont les bien venues aussi
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 17h47   #4
Membre actif
 
Avatar de Epica84
 
Christophe GUALANO
Étudiant
Inscription : décembre 2008
Messages : 164
Détails du profil
Informations personnelles :
Nom : Christophe GUALANO
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2008
Messages : 164
Points : 156
Points : 156
Envoyer un message via MSN à Epica84
Perso j'aurai fait une base de donnée avec des groupes ayant des droits afin que certaine personne puisse voir certain dossiers. Et j'aurai sécurisé tout ça avec htaccess et htpasswd.

Voilà pour ma solution.

__________________
ARLES, du 02 au 05 Avril 2010, Féria de Pâques.
Epica84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 22h57   #5
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Citation:
Perso j'aurai fait une base de donnée avec des groupes ayant des droits afin que certaine personne puisse voir certain dossiers. Et j'aurai sécurisé tout ça avec htaccess et htpasswd.
htaccess fait quoi exactement ?

la crainte numéro un à laquelle je dois répondre c'est : si quelqu'un pour une raison X ou Y qui n'est pas un utilisateur, entre sur le serveur et pompe tous les fichiers pdf, il ne doit pas pouvoir les lire. (Ou du moins pas sans qu'on le retrouve... Ou pas sans de grosses difficultés...)
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 08h41   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il faut chiffrer les fichiers sur le serveur alors.
http://maxime-ohayon.developpez.com/tutoriels/mcrypt/
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2010, 09h33   #7
Membre actif
 
Avatar de Epica84
 
Christophe GUALANO
Étudiant
Inscription : décembre 2008
Messages : 164
Détails du profil
Informations personnelles :
Nom : Christophe GUALANO
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2008
Messages : 164
Points : 156
Points : 156
Envoyer un message via MSN à Epica84
Citation:
Envoyé par Espinosa Voir le message
htaccess fait quoi exactement ?
Protège des dossiers. Donc je ferai aussi

Comme l'a dit sabotage je ferai aussi du cryptage directement sur le serveur sur les fichiers pdf et je rajouter la clé de décryptage qui change tout les mois afin qu'on ne puisse pas faire de la brut de force.
__________________
ARLES, du 02 au 05 Avril 2010, Féria de Pâques.
Epica84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 11h00   #8
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Comme le sujet m'intriguais j'ai fait rapidement un petit quelque chose qui devrait t'aider.
A partir du lien de sabotage du devrait êter en mesure de comprendre/compléter :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
<?php
 
class CryptPDF
{
	private $pdfOriginal = '';
	private $pdfCrypt ='';
	private $key;
	private $iv;
 
	public function __construct($key,$filein,$fileout=null)
	{
		$this->pdfOriginal = $filein;
		$this->pdfCrypt 	= $fileout;
		$key_size 			= mcrypt_module_get_algo_key_size(MCRYPT_3DES);
		$this->key 			= substr($this->key, 0, $key_size);
		$iv_size				= mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_NOFB);
		$this->iv				= mcrypt_create_iv($iv_size, MCRYPT_RAND);
	}
 
	public function crypt()
	{
		$data2Crypt  	= $this->readFile();
		$dataCrypted = mcrypt_encrypt(MCRYPT_3DES, $this->key, $data2Crypt, MCRYPT_MODE_NOFB, $this->iv);
		$this->writeFile($dataCrypted);
 
	}
 
	private function readFile()
	{
		$handle = fopen($this->pdfOriginal,'r');
		$data = fread($handle, filesize($this->pdfOriginal));
		fclose($handle);
 
		return $data;
 
	}
 
	private function writeFile($data)
	{
		$handle = fopen($this->pdfCrypt,'w');
		$data = fwrite($handle, $data);
		fclose($handle);
	}
}
 
$crypt = new CryptPDF('qsdo4sdkflSDLKFD','mon.pdf','mon.pdf.crypt');
$crypt->crypt();
Idéalement on devrait pas faire une classe crypt pdf mais plutot une classe de cryptage de fichier générique.Y'a de l'optimisation à faire si tu veux pas exploser la mémoire de ton serveur donc faudra bidouiller un peu pour améliorer ce code. Mais c'est pour l'exemple

Avec ce bout de classe j'ai pu crypter un pdf (donc le rendre illisible) , puis suffit de décrypter pour obtenir un pdf lisible.

Pense simplement bien à supprimer les pdf en clair une fois crypté.

Note : je suis assez surpris par la rapidité de mcrypt (quelques seconde pour crypter un pdf de 21mo)
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 22h05   #9
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Merci beaucoup pour vos tuyaux

Je retourne dans la boite demain, je ferais des essais et si j'ai d'autre question, je reviendrais vous voir ^^

Bonne année au passage
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 13h57   #10
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Bonjour

j'ai regardé mcrypt, c'est très intéressant je vais bien pouvoir m'amuser je pense ^^

par contr j'ai quelques question à propos de la protection HTaccess
j'ai vu que dans le htpasswd, il faut mettre des noms d'utilisateur, du coup je sais plus trop ni comment m'organiser.

En effet, c'est le logiciel qui dit qui a accès à quoi, et ce n'est pas une personne et elles peuvent avoir des qualit différente. De plus, je ne me vois pas demander à mes utilisateurs de ce loggué une nouvelle fois. Donc je log le logiciel une fois l'utilisateur co ? J'ai du mal à imagé le fonction de HTaccess je crois.

Si vous arrivez à comprendre mon problème faite moi signe. ^
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 15h26   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
[hs]
c'est pas un peu bizarre "une boite qui met un fort accent sur la sécurité de ses données", de demander à un stagiaire de faire ca ???
[/hs]
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 16h33   #12
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
HS : je me pose la même question... les moyens de sécurité sont centralisées donc ils vont pas venir dans le bled paumé pour y faire ?
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 17h48   #13
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par Espinosa Voir le message
Bonjour

j'ai regardé mcrypt, c'est très intéressant je vais bien pouvoir m'amuser je pense ^^

par contr j'ai quelques question à propos de la protection HTaccess
j'ai vu que dans le htpasswd, il faut mettre des noms d'utilisateur, du coup je sais plus trop ni comment m'organiser.

En effet, c'est le logiciel qui dit qui a accès à quoi, et ce n'est pas une personne et elles peuvent avoir des qualit différente. De plus, je ne me vois pas demander à mes utilisateurs de ce loggué une nouvelle fois. Donc je log le logiciel une fois l'utilisateur co ? J'ai du mal à imagé le fonction de HTaccess je crois.

Si vous arrivez à comprendre mon problème faite moi signe. ^
Tu peux protéger ton dossier via un htaccess dans lequel tu place un :
De cette manière impossible d'accéder à un fichier via une url classique. En revanche tu devras servir les fichiers avec php et readfile().
L'idéal étant tout de même d'avoir le dossier contenant les fichier sensibles hors de la racine web.

Citation:
Envoyé par stealth35 Voir le message
[hs]
c'est pas un peu bizarre "une boite qui met un fort accent sur la sécurité de ses données", de demander à un stagiaire de faire ca ???
[/hs]
C'est malheureux à dire mais entre un stagiaire à 300€ et un expert sécurité à 4k€ le choix est souvent vite fait pour bon nombre de boite se disans soucieuses de la sécurité ...
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 09h42   #14
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Citation:
C'est malheureux à dire mais entre un stagiaire à 300€ et un expert sécurité à 4k€ le choix est souvent vite fait pour bon nombre de boite se disans soucieuses de la sécurité ...
Gratuit surtout, vu que c'est un projet d'école...
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 09h45   #15
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Citation:
Envoyé par grunk Voir le message
Tu peux protéger ton dossier via un htaccess dans lequel tu place un :
De cette manière impossible d'accéder à un fichier via une url classique. En revanche tu devras servir les fichiers avec php et readfile().
L'idéal étant tout de même d'avoir le dossier contenant les fichier sensibles hors de la racine web.

Merci, j'ai plus de clé en main qu'il y a 3 semaines.
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 10h17   #16
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Code :
1
2
3
4
5
6
7
 
<Directory "???"> 
  Options FollowSymLinks 
  AllowOverride None 
  Order deny,allow
  Deny from all 
</Directory>

J'ai trouvé en fouinant sur le net que le code suivant dans le fichier httpd.conf de apache empeche de listing des répertoires. Quand pensez vous ?
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 12/01/2011, 11h24   #17
Membre à l'essai
 
Inscription : juin 2009
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 64
Points : 21
Points : 21
Une nouvelle question vient de poindre dans mon esprit, deux pour être exacte :
pour vous quelle est la méthode de chiffrement la plus efficace ? (NOFB ?)
et pour vous quel est l'algorithme de chiffrement le plus performent ? pourquoi as tu choisis 3DES ?
Espinosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 13h46   #18
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Pour les modes d'opérations voir : http://en.wikipedia.org/wiki/Block_c...s_of_operation

Pour l'algo de cryptage le plus répandue est sans doute AES. J'ai pris le triple DES dans mon exemple parce que j'ai juste copié collé la doc PHP pour la partie cryptage et que dans mon contexte ca n'avait pas d'importance
grunk 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 10h33.


 
 
 
 
Partenaires

Hébergement Web