IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Chiffrer des fichiers


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    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.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    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.

    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().

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    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

  4. #4
    Membre habitué Avatar de Epica84
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 164
    Points : 188
    Points
    188
    Par défaut
    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.


  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    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...)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut chiffrer les fichiers sur le serveur alors.
    http://maxime-ohayon.developpez.com/tutoriels/mcrypt/

  7. #7
    Membre habitué Avatar de Epica84
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 164
    Points : 188
    Points
    188
    Par défaut
    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.

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  9. #9
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    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

  10. #10
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    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. ^

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    [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]

  12. #12
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    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 ?

  13. #13
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    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é ...

  14. #14
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    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...

  15. #15
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    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.

  16. #16
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  17. #17
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    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 ?

  18. #18
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    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

Discussions similaires

  1. FOXPRO 2.6 : erreur créations du /des fichiers CAB
    Par breihtiti dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 16/11/2002, 12h28
  2. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 14h56
  3. Réponses: 3
    Dernier message: 25/07/2002, 11h42
  4. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 17h33
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 23h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo