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écurité application et mysql


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut sécurité application et mysql
    Bonjour,

    J'ai deux questions qui portent sur la sécurité d'un programme. J'ai développé un programme et déployé avec jws/jnlp et j'aimerai protéger mon code. ( car j'ai des infos un peu confidentielle dans une classe pour accéder aux serveurs ).

    1) je voulais savoir si on pouvait empêcher la décompilation d'un jar. et si oui comment ?

    2) Sinon pour lancer mon application j'utilise une connexion à une base de donnée mySQL où sont stocké les identifiants et mot de passe.

    Comment peut on faire pour que ce soit pas le programme en local qui dise si le couple login/mdp est correct ?

    Merci

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 104
    Par défaut
    1) Il faut obfusquer ton code par exemple. Jette un oeil a ProGuard par exemple. Mais cela ne fait que ralentir l'aggresseur...

    2) Ton programme local fait une connection a la BD avec le user/mdp et le seveur te donne la "connection" ou pas. Donc en theorie il ne fait pas ca en local ou je n'ai rien compris a ta question.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    tout d'abord merci d'avoir répondu à mon message.

    1) je vais voir de ce coté là, si tu as d'autres nom qui te viennent à l'esprit je suis preneur.

    2) En fait au lancement de mon application, j'ai une JDialog qui possède 2 JTextField : login et mot de passe.

    Ma base de donnée User a une clé primaire Id et d'autres champs dont un qui est motdepasse.

    Mon programme local fait donc grosso modo :
    jtf_login : donc le login entré par le clavier.
    jtf_motdepasse : le mot de passe entré
    select Id motdepasse from User where Id = jtflogin
    et ensuite si jtf_motdepasse = resultat_requete_motdepasse alors
    on peut lancer le programme sinon retenter sa chance.

    Et le truc c'est que je ne veut pas que le mot de passe circule sur le réseau, et en gros qu'on ne puisse pas se logger sur la base de donnée facilement.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 104
    Par défaut
    Ben oui mais alors ca va être plus difficile Moi je ferai (sans être spécialiste):

    Soit tu mets ton serveur sans user ni mot de passe (encore plus grave a ne pas faire) avec un firewall si par exemple tes clients de confiance au sein du reseau local ont une IP fixe et une MAC fixe par exemple que tu px filtrer sur le port de la BD.
    Soit tu regardes si on sait crypter le user/mdp.
    Soit tu n'utilises pas de db ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    768
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 768
    Par défaut
    1) Ofusquer ton code dans le jar ne sert effectivement qu'a ralentir, un attaquant pas très opiniatre. Un pro prendra le temps qu'il faut.

    2) Un utilisateur avec trop de droit est bien de trop dangereux avec une connection directe coté client. Pour cette partie dans ton cas il te faut mettre ta sécurité sur ta base de donnée. Mais cela t'oblige à gérer des comptes pour tout tes utilisateurs.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    D'accord, c'est bien ce que je pensais, de toute façon tout code est piratable.
    Pour la base de donnée en fait je ne peux pas créer de compte pour chaque personne, car il y a trop de monde. Donc je vais restreindre les accès à la base.
    Sinon dites moi ce que vous pensez de ça pour s'authentifier dans le programme :

    mes tables : utilisateurs ( identifiant , mot de passe ), données ( identifiant utilisateurs, puis divers données)

    authentification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    JTextField login_id = new JTextField();
    JTextField mdp = new JTextField();
     
    //ma requête serait de la forme :
     
     
    resultatmdp = select motdepasse from Utilisateurs where identifiant =  login_id.getText();
     
    if( resultatmdp == mdp.getText() ) OuvrirProgramme();
    Si la table utilisateurs autorise seulement le select sur motdepasse et identifiant, est ce que ce type d'authentification présente un risque pour la sécurité de la base de donnée ?

Discussions similaires

  1. Application PHP MySQL partagée en réseau
    Par Delphi-ne dans le forum Outils
    Réponses: 3
    Dernier message: 06/03/2007, 09h51
  2. [Sécurité] .htaccess et MySQL
    Par superadnan3 dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2006, 23h45
  3. Réponses: 3
    Dernier message: 10/02/2006, 18h33
  4. application php+mysql de gestion executable
    Par kephrem dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 03/02/2006, 10h55
  5. distribution d'application Delphi-MySQL
    Par nanobrun dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/08/2005, 09h14

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