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

PHP & Base de données Discussion :

[Conception] Sécurité des données d'une base


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut [Conception] Sécurité des données d'une base
    Bonjour,

    Est-ce que cela sert vraiment, selon vous, à crypter/décrypter certaines données dans une base de données ?

    Je m'explique, si la base de données est piratée, alors c'est que le site Web l'est aussi. On a forcément les identifiants de connexion donc un accès au site et aux algos de cryptage finalement à tout !

    Par conséquent, la sécurité n'est-elle pas une protection absolue aux répertoires contenant les fichiers de configurations plutôt qu'à l'encryptage des données stockées en base ?

    merci

  2. #2
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Citation Envoyé par viny
    [...]Je m'explique, si la base de données est piratée, alors c'est que le site Web l'est aussi. On a forcément les identifiants de connexion donc un accès au site et aux algos de cryptage finalement à tout ![...]
    Salut,
    il y a (à mon sens) une petite faille dans ton raisonnement.
    1°) Ce n'est pas parce que tu as réussi à "pirater" la base de données que tu as accès aux sources du site (quand bien même les sources du sites seraient situées sur le même serveur que la base de données)
    2°) "On a forcément les identifiants de connexion" > en général, les login sont stockés en clair dans la base de données, donc, oui, tu (enfin le pirate ) as accès aux logins des membres. Par contre, en général, les mots de passe sont encryptés, et l'astuce, c'est que l'algo d'encryptage comme tu l'appelle est à sens unique. C'est à dire qu'il s'agit d'une fonction très difficilement inversable.
    Il est clair que si tu as un algo fait maison (et facilement inversable), qu'en plus tu as les codes source de l'algo, ta fonction de cryptage va pas faire long feu.
    Heureusement, il existe des fonctions assez bien faites et disons "standards", comme MD5. Attention, je ne dis pas que MD5 est incassable, mais il faudra un peu de temps et de persévérance pour ça, et ça devrait suffir pour protéger ton site web.

    J'espère avoir été clair.
    N'hésite pas à demander des eclaircissement sinon.
    a+, nako.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    Si tu as réussi à pirater la base de données c que tu as les identifiants de connexion à la base et qui te permettent d'y accéder...donc va pas falloir longtemps pour avoir accès au site. Tu les dis toi-même

    Il est clair que si tu as un algo fait maison (et facilement inversable), qu'en plus tu as les codes source de l'algo, ta fonction de cryptage va pas faire long feu.
    Autre chose, il est vrai que si tu utilises md5() pour crypter tes mots de passe cela rend l'affaire un peu plus difficile. Mais comme j'utilises un algo de cryptage et decryptage nécessaire pour mon application car je dois à la demande du client renvoyer ces identifiants de connexion (Mote de passe et pseudo).

    Par conséquent md5() est inutilisable dans mon cas...

  4. #4
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    je dois à la demande du client renvoyer ces identifiants de connexion
    salut,
    ou alors tu changes de stratégie en recréant un nouveau mot de passe quand le client les a perdu.


    Mais la question que je me pose alors c'est: Est ce que le pirate peut faire un update de la base de données pour changer le champ "password" par ce qu'il veut et ainsi accèder au site?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    exactement il peut le faire ! tu crées un md5 de ton mot de passe et tu l'insères dans les champs mot de passe de la base et le tour est joué

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Il faut savoir aussi que les utiisateurs utilisent les mêmes mots de passe sur plusieurs sites différents. Et savoir que mon mot de passe que j'utilise ailleurs est stocké en clair me rend un poil paranoiaque...

    Et de toutes façons, deux précautions valent mieux qu'une

  7. #7
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    On est parti du postulat que quelqu'un avait accès à la base de donnée, mais quelle est la faisabilité d'une telle intrusion ?

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    en php il est *relativement* simple d'acceder a la base de donnée depuis un site mal programmé. de plus, il ne faut pas oublier "l'ennemi interieur". Si tu stocke tes mots de passe en clair dans ta base de donnée, tu y a acces (c'est a dire que tu peux voir les passwords de tes utilisateurs) mais ton hebergeur y a acces aussi ! En général on peut lui faire confiance, mais une entreprise comme un autre, avec des gens qui bougent, des stagiaires, etc... si ton site commence a devenir important et connu, c'est une chose a prendre en compte je pense.

    Edit : Dans ce cas là, l'hebergeur peux aussi modifier les données, mais il est plus intelligent de "juste" regarder les mots de passe en clair, puis se connecter au site avec le bon mot de passe, ou encore d'utiliser cette connaissance du mot de passe pour l'utiliser sur un autre site avec le meme utilisateur (car comme l'a dit Mr N. on a tendance a utiliser les memes mots de passe sur plusieurs sites)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 99
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par Fladnag
    en php il est *relativement* simple d'acceder a la base de donnée depuis un site mal programmé
    Salut, j'aurais voulu avoir plus d'informations sur ce sujet, dans quel cas peut on accéder à une base quelle genre de faille doit on eviter de faire ? je me posais justement la même question et je crypte mes mots de passe dans ma bdd, ici je voudrais implementer un carnet d'adresses et je me demande s'il est utile de crypter chaque information qui ne pourra être décryptée que par l'utilisateur

    merci par avance

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    Si tu es face à un «Pirate malin», il fera un copie de ton site sur un de ses serveurs, pour ensuite accédé comme toi, avec une administration classique (même si protégé par mot de passe, il peut toujours «nulled» la parti authentification de l'administration du site qu'il aura copier sur son serveur).
    Ensuite, il pourra accédé à ta base de donnée de tel manière que le cryptage de lui poseras aucun problème (il est même fort possible qu'il ne sache même pas que la base est crypté).

    Sinon, je sais qu'en fonction des hébergeurs, il est possible que si il trouves des choses étrange dans ta base de donnée (base de donné crypter = donnée illégale), ils peuvent (selon leur CGV) te suspendre ton compte.

  11. #11
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    ....On aspire pas comme ca un site dynamique.....

    Tout ce que le client voit, c'est ses pages HTML, et ses GET et POST.

    Si quelqu'un arrive à te chopper ton site entièrement (administration, etc....) ca viendra surtout d'une grosse faille serveur, et pas de la programmation du site....

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    non, mais je disait une copie du site, la source PHP, si il pirate le site et qu'il peut avoir le «config.php» avec les login et mot de passe de la base de donnée, il est claire qu'il peut avoir facilement tout supprimer, ou encore tout recopier ailleurs

    (dans la probabilité ou il arrive à trouver une faille qui lui permet d'avoir un accès totale)
    viny : «si la base de données est piratée» je resté dans cette probabilité...

    Mais c'est claire que de toute façon pour arrivé à avoir la possibilité de lire la source d'un fichier PHP il faut une faille très critique.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 99
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par juJuv51
    (base de donné crypter = donnée illégale), ils peuvent (selon leur CGV) te suspendre ton compte.
    ok merci donc faut faire attention, mais pourquoi si on crypte une BDD c'est pas forcement des données illégales, enfin la apparemment c'est selon les hébergeurs.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    Je sais que la plus par du temps, si tu cryptes des données dans une base, l'hebergeurs qui à pour obligation d'interdire (sans quoi il peut avoir des problèmes) des contenues tel que:
    pédophilie, protégé, raciste...

    Si il ne peut pas contrôler

  15. #15
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Pour ce qui est du contournement d'une partie admin, oui, il faut une faille dans le code php... mais il est hélas tres fréquent d'en trouver.

    Bien souvent une telle faille a pour origine :
    * une mauvaise configuration de l'hebergeur (donc il faut faire tres attention si c'est un hebergeur spécialisé ou un p'tit hebergeur qui n'a pas l'habitude. Si c'est un "grand compte" genre free, wanadoo, ou autre, y a moins de chances mais c'est pas un gage de sécurité absolue quand meme)
    * Une absence de tests poussés par le developpeurs du site
    * Une méconnaissance par le developpeur des possibilités de failles et d'attaque

    Pour résoudre le dernier point, je ne peux que vous conseiller de lire les articles disponibles ici : http://www.phpsecure.info/v2/zone/pArticle
    Les articles sont super vieux mais hélas toujours d'actualité. Il s'agit d'une "introduction" plutot complete sur les failles les plus courantes. Reste peut etre les failles de Cross Site Scripting, mais je vous laisse google pour ca ;o)

    Crypter toutes les données d'une base de données ne me parait pas pertinent... Il te faut determiner a quoi sert le cryptage avant de l'employer :
    * Cryptage non bijectif (md5, sha1, crypt mysql)
    Utile pour les mots de passe : le mot de passe n'est pas stocké en clair dans la base de données, donc quelqu'un qui a acces en lecture a la base ne peux *theoriquement* pas retrouver le mot de passe d'origine (ce n'est pas tout a fait vrai, mais y a pas tellement de meilleur systeme... alors autant prendre "le moins pire")
    * Cryptage bijectif (xor ou avec clé publique/privée)
    Là tu indique clairement que tu souhaites pouvoir décrypter les données. Donc quelque part, ton site contient l'algorithme qui permet de faire ca. Donc qqun qui a acces a ta base en lecture a des chances d'avoir acces a ton code source php. Le seul moyen pour que ca ne lui permette pas de décrypter tes données c'est de demander a ton internaute, a chaque visite, de copier/coller dans un formulaire une clé de cryptage de 2km de long pour travailler avec ;o)

    Bref, les données de ta base étant "figées" (ie : elles ne se déplacent pas sur le réseau) je ne pense pas qu'il soit besoin de les crypter. Eventuellement tu peux les crypter avant de les envoyer a l'internaute, et les décrypter sur le poste client en javascript par exemple ou avec un autre moyen.

    Apres ca depend... si tu veux stocker la position géographique des groupuscules terroristes que tu dirige, forcement, vaux mieux eviter de mettre ca en clair ;o))

  16. #16
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Personnellement , pour la sécurité , je script en md5 le mot de passe , et je fait une sauvegarde de ma base de donnée . ( les sauvegarde peuvent être intéressante en cas de bug , qui détruise la base de donnée )

    En cas d'attaque , soit le pirate , veux détruire , donc , tu as une copie .

    Soit il veux usurper l'identité , une solution , si sa arrive , bloquer tout les compte qui as réussi a avoir et envoyer un mail pour réactiver ....

    Enfin , pour éviter les attaque de force , pour avoir le mot de passe : tu laisse un nombre limite de chance par login pour taper son mot de passe .

    Pour un site standard , sa suffit largement

    Enfin , si tu as des données fort importante ....

    1 l'héberger dois être sécuriser ,
    2 un cryptage de la base de donnée , est nécessaire ... ( mais , le serveur prendras plus de temps pour crypter / décrypter la base de donnée )

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 99
    Points : 123
    Points
    123
    Par défaut
    ok c'etait bien interessant ton post Fladnag, je vais lire le site que tu as donné en lien il a l'air de bien renseigner sur le sujet

    au niveau de mes mots de passe ils sont hashés en SHA1 avec un mot généré aléatoirement stocké dans la BDD, j'ai lu ça je sais plus où sur le site ça permet de ne pas créer des dictionnaires (2 mots de passe identiques = 2 hash SHA1 différents).

    au niveau de mes données à crypter oui je pensais faire avec une clé générée par le nom d'utilisateur ou un truc dans le genre, mais ca ne serait utile que dans le cas où le pirate n'a accès qu'à la BDD et non au code source (sinon il retrouve l'algorithme et hop c'est fini), mais je pense tout stocker en clair finalement.

    Je vais rajouter aussi une limite de connexions ratées au delà de laquelle le compte sera bloqué, merci de m'avoir donner l'idée.

    Sinon niveau serveur c'est un PC que j'ai moi même configuré sous Linux donc là je peux pas garantir la sécurité . Techniquement je n'ai laissé que le port 80 d'ouvert donc il n'y a moyen de se connecter à la base de données que par le serveur web apache, je vais essayer de pas trop faire de failles dans mon code

    en tout cas merci beaucoup à tous

Discussions similaires

  1. [MySQL] Conception d'un tableau affichant des données d'une base
    Par fey dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 14/09/2008, 14h52
  2. [MySQL] Modifier des données dans une base de donnée
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/01/2006, 10h56
  3. Exportation des données d'une base Oracle sous forms
    Par moezsokrati dans le forum Forms
    Réponses: 4
    Dernier message: 13/10/2005, 09h55
  4. [Excel] Récupérer des données d'une base Access
    Par FoxDeltaSierra dans le forum Excel
    Réponses: 8
    Dernier message: 03/09/2005, 11h22
  5. [Conception] Gestion des accents dans une base de données
    Par MiJack dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/07/2005, 12h41

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