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

JDBC Java Discussion :

Sécuriser une connexion MySql


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Points : 93
    Points
    93
    Par défaut Sécuriser une connexion MySql
    Bonjour,

    J'ai écris une application de gestion utilisant une base de données MySQL.
    Cette application tourne sur plusieurs postes (Win XP) et se connectent à la base de données (déployée sur un Win Serveur 2003 avec WAMP) à travers le réseau local.

    D'après ce que j'ai lu, établir la connexion à la base de données de la manière suivante n'est pas sécurisé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/test","root","pass")
    Dans le sens où quelqu'un qui observe le réseau pourrait assez facilement récupérer les infos d’authentification (et les données qui transitent ?)

    Étant donné que le réseau qu'utilise mon application n'est pas sûr, je cherche à sécuriser la connexion à la base de données.

    Il y a bien quelques info ça et là sur le web mais c'est très souvent de l'environnement linux (que je ne connais/n'utilise pas).
    Le langage Java, SQL tout ça je maîtrise très bien mais le réseau, la config serveur et autres joyeusetés je n'y connais rien.

    Donc si quelqu'un pouvais me faire un petit topo sur les étapes à suivre pour sécuriser ma connexion, je lui en serait éternellement reconnaissant

    D'avance, merci

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 133
    Points : 122
    Points
    122
    Par défaut
    Salut,

    alors ne jamais travailler avec un compte utilisateur qui à les droits sur tout sur le serveur mySQL premièrement.

    Ensuite, Il y a je pense un système avec des clés qui s'échange...:/

    Sinon côtés ssl , mais je n'en suis pas sûr...

    Sinon je pense le mieux entre guillemet c'est de faire tourner une application qui gère la bd sur le même réseau Intranet pour rester en interne et donc tout ce qui est mot de passe, ect de la bd ne sort et ensuite ton application qui se trouve n'importe où à l'extériere communique avec cette application pour recevoir les infos. Et la je pense que c'est beaucoup plus facile de sécuriser les données qui voyage sur le réseau comme en sll, ou crypter les donner...

    Mais bon c’est peut-être exagérer et il faut avoir la possibilité de le faire je pense, non?

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Points : 93
    Points
    93
    Par défaut
    alors ne jamais travailler avec un compte utilisateur qui à les droits sur tout sur le serveur mySQL premièrement.
    L'utilisateur de la base de données ne dispose que de droits nécessaires sur la base de données. Pas de "root" sans mot de passe évidemment. J'ai même été jusqu'à faire des restrictions d'IP mais c'est fastidieux à mettre en place car le réseau est éphémère et ne dure que le temps d'un évènement.

    Ensuite, Il y a je pense un système avec des clés qui s'échange...:/
    Si tu as plus d'info là dessus, je suis preneur.

    J'avais effectivement pensé développer ma propre application "serveur" mais je me disait que ma problématique n'est pas neuve et que de tels systèmes doivent déjà exister. De plus je n'ai pas la maitrise de la création/utilisation de protocoles, sécurisé qui plus est.

    Le SSH semble également être une solution mais en environnement windows c'est pas facile de choper de l'info. N'y connaissant rien, il me faut une procédure claire et ça, je n'en trouve pas.

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Réponse simple, tu intercales un serveur entre les deux.

    Tu développe une application proposant des web services correspondant aux diverses actions réalisables sur ta base, puis tu utilises ces web services dans tes applications clientes.

    De ce fait seule l'application proposant les web services a un accès direct à la base, et cette application sera sur un serveur inaccessible aux clients.

    Puis tu définis un web service d'authentification qui renvoie un token au client, token qui devra être fourni par le client à chaque appel de web service.

    Comme ça, d'un coup (enfin presque), ta base est vachement plus sécurisée vu qu'aucun client n'en a les mots de passe...

    De plus ça te permet de contrôler tout ce qui est envoyé par les clients, en général les bases de données sont planquées dans des DMZ auxquelles peu de machines ont accès (quelques flux ouverts dans un firewall, un pour le serveur d'application, ceux pour les DBA et basta), le moins de monde y accèdera directement, la plus sécurisée elle sera.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Points : 93
    Points
    93
    Par défaut
    Ok,

    Les web services sont une bonne idée mais ça demande pas mal de développement.

    Je m'attendait plus à trouver une solutions plus simple passant par un peu de config et une instanciation différente de ma connexion "and it just work".
    Mais manifestement rient de tel n'existe.

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu as déjà tout le code nécessaire pour la partie DB.

    Il ne te reste plus qu'à définir les objets de base de ton WebService ou ton WSDL (au choix) et de générer le nécessaire via du JAX-WS.

    Cf: ftp://ftp-developpez.com/mbaron/soa/jaxws.pdf

    Il n'existe pas de solution qui "just works" quand l'archi initiale est un poil bancale.

    Le développement d'application n'est pas de la magie, on le saurait déjà sinon ^^...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Points : 93
    Points
    93
    Par défaut
    D'accord, je te remercie.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 133
    Points : 122
    Points
    122
    Par défaut
    Comment plus haut, le plus simple c'est à mon avis service REST en utilisant les technologie :

    JPA ou HIBERNATE pour la manipulation de la BD.
    Et ensuite JAXB pur le XML (Il se marie très bien avec JPA pour le mapping)
    Et JAX-RS pour faire le service REST... (Très simple avec le type MIME application/xml)

    Bonne chance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sécuriser une BD mySQL
    Par maysam dans le forum Administration
    Réponses: 1
    Dernier message: 17/03/2008, 08h54
  2. tester une connexion mysql
    Par pop_up dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 03/08/2007, 15h08
  3. [Sécurité] Sécuriser une connexion à un PHP
    Par hach22 dans le forum Langage
    Réponses: 7
    Dernier message: 03/02/2007, 13h42
  4. Realiser une connexion mysql et execute une requete
    Par Taz_8626 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/05/2006, 10h52
  5. [JSP] erreur lors d'une connexion à mySQL
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/08/2004, 16h48

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