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 :

Sécurité & confidentialité


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut Sécurité & confidentialité
    Bonjour,

    Je me pose une question à laquelle je ne trouve pas de réponse.

    Je souhaite développer une application en PHP. Elle contiendra des données très sensibles qui ne devront en aucun cas être visible par une personne non autorisée.

    L'appli tournera sur un serveur dans une entreprise, donc certaines personnes peuvent avoir accès au dossier contenant les fichiers PHP (gérant, informaticiens, ...)

    Le problème c'est que lorsque je vais développer l'appli, je vais mettre les informations de connexions MySQL dans un fichier et n'importe qui pourra visualiser la BDD via phpMyAdmin... Or, il faut que personne ne puisse accéder à cette base de donnée.

    De plus, je compte vendre cette application, le problème c'est qu'une fois vendue, le client a le code source entre les mains et peut donc modifier le l'appli et la redistribuer.

    Comment parer à cette éventualité, si ce n'est héberger l'appli sur un serveur distant où je suis le seul à pouvoir accéder aux fichiers. En théorie, même moi je n'ai pas le droit de consulter les données...

    Les données ne sont consultables que par la personne qui les rentre.

    Merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Tu peut compiler le php pour en faire un executable, ca enleve déja l'accès au code source.

    Sinon, les identifiants de la base peuvent être stockés à l'exterieur, à toi de sécuriser la manière dont ils peuvent être atteints (on peut imaginer une clé cryptés constituée de la date du jour...).

  3. #3
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Pour ce qui est de la sécurité des MDP etc, php offre certaines solutions. Par exemple pour hasher une chaîne (je crois qu'on dit comme ça, c'est sur que c'est pas du cryptage) il y a le sha1 :
    http://php.net/manual/fr/function.sha1.php
    Comme ça une fois hashé et rentré dans une base c'est indécryptable. Certains tableau recensent les sha1 fréquents, mais ils suffit de concaténer avec une chaîne de caractère chaque chaîne à hasher afin de ne pas retrouver ton mot dans un tableau, même s'il y est référencé !
    Je sais pas si ça peut t'aider, mais bon j'aurais essayé

  4. #4
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour,

    Déjà j'ai bien envie de dire pourquoi un PHPMyAdmin ? Il y a les outils de gestion de MySQL ou d'autre qui tourne sur des clients "lourd".

    Après la simple idée que "n'importe qui" pourra le voir me fait peur. Si les données à stocker sont comme vous le dites :

    "contiendra des données très sensibles qui ne devront en aucun cas être visible par une personne non autorisée"
    Le serveur (comme tout serveur) ne devrait pas être accessible à tout un chacun. Après on parle bien d'interdire l'accés à la dite base données pour toute personne voulant la consulter via PhpMyAdmin ou autre ? Déjà supprimer ces outils du serveur une fois le développement fini après il faudra obligatoirement passer par MySQL en ligne de commande pour y accéder ou par d'autre scripts.

    En gros vous ne nous avez pas bien définit le cadre de votre développement ni qui vraiment a le droit de voir les fichiers en question. Car cela pose d'autres soucis qui fait les sauvegardes de la BDD ? Car qui dit données "très sensible" dit sauvegarde sécurisées très régulière...

    Et comme le dit Xenon03 :

    Sinon, les identifiants de la base peuvent être stockés à l'exterieur, à toi de sécuriser la manière dont ils peuvent être atteints (on peut imaginer une clé cryptés constituée de la date du jour...).
    Pour le reste si vous souhaitez vous même héberger la solution et que ces données sont vraiment très sensibles êtes vous conscient de la sécurité et des risques que vous prenez en faisant sortir ce genre de données.

    Si vous continuez sur l'option SaaS faites bien attention d'un niveau contractuel et aussi sur vos responsabilités.

    Après pour la question du code source, je dirais que c'est la problématique de l'opensource mais aussi ça grande force.

    Car des données très sensible on est pas dans des login mot de passe à mon avis n'est ce pas ?

    Cordialement,

  5. #5
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    Bonjour,

    pourquoi ne pas mettre tes fichiers de config dans un seul dossier, puis proteger ce dossier avec un .htaccess ?

  6. #6
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour,

    pourquoi ne pas mettre tes fichiers de config dans un seul dossier, puis proteger ce dossier avec un .htaccess ?
    Car on parle d'accès physique direct au serveur du moins c'est comme cela que je l'ai pris

    Cordialement,

  7. #7
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    je vais mettre les informations de connexions MySQL dans un fichier
    pour moi, c'est un fichier .php qui contient log/psw... qui sera inclut dans les autres .php... xD

    mais c'est vrai que, maintenant que je relis le post... parler de vendre l'appli php... je crois que je me suis fourvoye dans la mauvaise direction.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut
    Merci pour toutes ces réponses.

    Tu peut compiler le php pour en faire un executable, ca enleve déja l'accès au code source.
    Je vais mettre ça dans mes options, il faut que je regarde comment ça fonctionne.

    les identifiants de la base peuvent être stockés à l'exterieur,
    Ca m'inquiète un peu, mais pourquoi pas.

    Pour ce qui est de la sécurité des MDP
    Ca je sais faire, ça ne me pose pas de problème, généralement j'utilise un double cryptage pour être tranquille :
    Déjà j'ai bien envie de dire pourquoi un PHPMyAdmin ?
    Je dis PHPMyAdmin parce que je pense qu'il me faudra un outils pour les débuguer au cas où. Après je ne suis pas fixé. Mais c'est vrai que je peux supprimer le fichier de config de PHPMyAdmin (ou autre) et le recréer au moment où je veux intervenir sur la base.

    pourquoi ne pas mettre tes fichiers de config dans un seul dossier, puis proteger ce dossier avec un .htaccess ?
    C'est vraiment pour éviter la consultation depuis l'intérieur, quelqu'un qui aurait accès au serveur.


    Je vais vous résumer la situation avec plus de détail et avec un exemple.

    Je veux développer un logiciel pour le secteur bancaire (c'est pas vrai mais les données sont du même type). Ce logiciel stockera les données personnelles des clients, donc très sensible. De plus, le banquier A n'aura pas le droit de consulter les données clients du banquier B. Le technicien informatique de la banque, lui a accès au serveur, mais il ne doit pas pouvoir accéder aux données non plus.

    Ensuite, les banquiers devront avoir accès aux données clients partout, c'est à dire autant au bureau que chez le client lui même.

    Etant donné que je me méfie plus du piratage interne qu'externe, je ne souhaite pas que l'application soit récupérée par le technicien informatique de la banque, maquillée et revendue à une autre banque. Je ne veux pas non plus que l'application soit modifiée pour notre technicien pour n'importe quelle raison. Et je ne veux surtout pas qu'un petit malin ayant accès au serveur puisse accéder aux données.


    Sinon j'ai pensé à un truc, mettre l'application sur un mini pc de type sheevaplug et condamner tous les accès au disque sauf le port 443 pour l'application et un port ssh pour que je puisse maintenir le logiciel à jour tranquillement.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut
    êtes vous conscient de la sécurité et des risques que vous prenez en faisant sortir ce genre de données.

    Si vous continuez sur l'option SaaS faites bien attention d'un niveau contractuel et aussi sur vos responsabilités.
    Si je fais ça bien avec du https, ça devrait être pas trop mal non ?
    Comme je vous l'explique dans l'exemple, les personnes devront de toute manière se connecter depuis l'extérieur de la société, donc passer par internet. Alors que ça revienne à la société ou sur un serveur à moi...


    Après pour la question du code source, je dirais que c'est la problématique de l'opensource mais aussi ça grande force.
    Oui c'est très bien l'opensource, mais là c'est un développement quasiment spécifique, je ne pense pas vendre beaucoup de licence, (une centaine au maximum), donc la communauté ne sera pas facile à créer. Si je vois que ça bouge on verra.


    Car cela pose d'autres soucis qui fait les sauvegardes de la BDD ? Car qui dit données "très sensible" dit sauvegarde sécurisées très régulière...
    Si je fais un export de la base de donnée que je zip avec un cryptage et mot de passe, ça devrait le faire non ? J'ai pas été foutu d'ouvrir un .7z que j'avais fait avec un mot de passe, donc je pense que ça peut le faire.

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    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 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Si les données sont vraiment sensible , la seule véritable solution est de crypter les données.
    Mysql possède des fonctions dédiées à cette tache.

    Ce qui donnera par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO t VALUES (1,AES_ENCRYPT('text','cle_secrete'));
    Il faudra évidemment faire un décrypt à la lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AES_DECRYPT(champs, 'cle_secrete') ...
    Mais une personne arrivant à mettre la main sur un export de la base ne pourra tout simplement rien en tirer. Il faut par contre accepter une baisse de performance sur l'ensemble de l'application.

    Dans le même genre sqlite propose une extension. Mais ça demande de recompiler sqlite pour PHP avec cette extension qui coute 2000$

    Pour ce qui est du code PHP il est tout à fait possible de l'obfusquer afin de le rendre non modifiable , voir même d'y appliquer une licence (genre 30 jours d'utilisation).
    Voir des outils comme Zend Guard (il existe probablement des alternatives open source)

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut
    Je pense que je vais utiliser le cryptage en BDD.

    Merci

Discussions similaires

  1. [AC-2010] ACCDR : Options de sécurité / param de confidentialité
    Par jff42 dans le forum Runtime
    Réponses: 6
    Dernier message: 19/07/2012, 14h06
  2. sécurité et confidentialité entre un client et un serveur web
    Par contremaitre dans le forum Sécurité
    Réponses: 4
    Dernier message: 06/01/2010, 21h24
  3. sécurité -> confidentialité <- sureté de fonctionnement
    Par subzero82 dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 01/05/2007, 18h27

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