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

VB.NET Discussion :

Cryptage mot de passe pour accès base de donnéées


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Cryptage mot de passe pour accès base de donnéées
    Bonjour,

    Voilà, j'ai un site sur lequel s'enregistrent les internautes. Je leur envoie un identifiant et mot de passe.

    Ensuite ils peuvent utiliser mon logiciel sous Windows.

    Le problème c'est comment coder le mot de passe de ma base de données dans le code de mon application ?

    Je ne veux pas que ce mot de passe soit écrit en clair dans le code.

    Merci d'avance

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Il faut utiliser un système de hashage (MD5)
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Merci pour ta réponse.

    Je ne vois pas trop comment faire.

    En effet, je dois créer ma connection dans mon programme et c'est là qu'il faut entrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oConn As MySqlConnection
            oConn = New MySqlConnection()
            oConn.ConnectionString = "server =localhost;user = toto;password = '123';database= client"
    Or je ne veux pas que les informations soient visibles.

    Encore merci

  4. #4
    Membre averti
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Points : 391
    Points
    391
    Par défaut
    Bonjour,

    L'idée du Hash MD5 est la suivante : plutôt que de transmettre le mot de passe en clair...

    1. on calcule l'empreinte numérique du mot de passe sur 128 bits (coté client)

    2. On transmets l'empreinte numérique au serveur

    3. Le serveur vérifie que le Hash MD5 est conforme à celui qui est dans une base de données (par exemple)

    4. Si l'égalité est vérifiée, l'identification est validée.

    Les avantages du MD5 sont les suivantes :

    - Simplicité de mise en œuvre

    - A aucun moment le mot de passe d'origine n'est transmis ni stocké

    - Il est statistiquement improbable (comprenez "impossible") de trouver deux fois le même Hash MD5 avec deux mots de passe différents. D'où une très grande difficulté de pirater le mot de passe par essais aléatoires.

    Plus concrètement, voilà une fonction VB.NET qui calcule le Hash MD5 à partir d'une chaîne de caractères (votre mot de passe, par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Private Function GenerateHash(ByVal SourceText As String) As String
            'Instantiate an MD5 Provider object
            Dim Md5 As New MD5CryptoServiceProvider()
     
            Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(SourceText)
            bytesToHash = Md5.ComputeHash(bytesToHash)
            Dim strResult As String = ""
            For Each b As Byte In bytesToHash
                strResult += b.ToString("x2")
            Next b
            Return strResult
        End Function
    En mode lecture/écriture.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Le plus simple et plus propre est de stocker la chaîne de connexion dans le fichier de configuration et de crypter ce dernier.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Un grand merci pour les réponses.

    Par contre je ne comprends pas très bien où placer le codage.

    Je pense que cette solution est bonne:

    - je crypte toute ma base de données.
    - la connection de mon programme vers la base de données sera cryptée
    - je compare le mot de passe avec celui de la base.

    De ce fait, même si le pirate arrive à lire le mot de passe à ma base, il ne pourra rien faire car tout le reste sera crypté.

    Quand pensez-vous?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par berger2 Voir le message
    - je crypte toute ma base de données.
    Pourquoi tout crypté vu que les identifiants le seront alors sans ces derniers impossible de se connecter à la base.

    Citation Envoyé par berger2 Voir le message
    - la connection de mon programme vers la base de données sera cryptée
    Tu mets la chaîne de connexion dans le fichier app.config ou web.config et il existe une astuce pour crypter la section concernée.

    Citation Envoyé par berger2 Voir le message
    - je compare le mot de passe avec celui de la base.
    Pas besoin si tu cryptes la section contenant ta chaîne de connexion, elle sera décryptée automatiquement par ton application à la lecture. Pas besoin de comparaison ni quoi que ce soit.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Les clients peuvent télécharger des fichiers antérieurs à la date du jour s'ils ne sont pas inscrits.

    Sinon ils peuvent télécharger le fichier du jour.

    Voilà ce que je fais:

    - quand le client s'inscrit, il est enregistré sur ma base de données (mot de passe et identifiant et date maximum d'utilisation du fichier du jour ( exemple 1 semaine)
    - je lui envoie un mail avec ses identifiants
    - lors de la première ouverture du logiciel, le client entre le mot de passe et identifiants
    - le logiciel va vérifier sur la base s'il peut encore utiliser le fichier du jour.

    Or c'est là que se pose le problème de sécurité, c'est que le logiciel doit se connecter à la base de données avec un mot de passe et identifiant.

    C'est pourquoi je me suis dit, qu'il valait mieux tout crypté par sécurité.

    L'application est déployée avec Clickonce

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Juste pour être sur de bien avoir compris la problématique:

    - La base de donnée auquel se connecte ton application Windows est distante (sur ton serveur) et non pas locale.
    - Le login et le mot de passe que tu envoies corresponde à un couple d'identification sur la base de donnée (Et non pas une connexion commune à la base de donnée puis une fonction d'autentification se basant sur une requête dans cette dernière).

    Si c'est bien le cas, je peux déjà te préciser d'oublier les postes précédant parlant du MD5.

    La technique la plus simple (et selon moi la seul vraiement efficace) pour ne pas avoir de mot de passe enregistré en clair sur le poste du client: Ne pas enregistré de mot de passe et le demander à l'utilisateur au lancement de l'application dans une boîte de dialogue, puis de crée la chaîne de connexion à la volée.

    En effet si tu utilises des fonctions de cryptage sur l'application en .net, il sera relativement aisé de les retrouvés avec de l'ingénieurie à rebours pour decrypter ces informations. Certains diront qu'il est plus difficile de trouver l'emplacement d'un fichier de configuration de click-once...

    Autrement il est aussi possible de déléguer le stockage et le cryptage des mot de passe aux API Windows.
    Un début de piste...

    En conclusion:

    Laisse tomber toutes les fonctions de cryptage homemade codée en .NET qui n'offre qu'une illusion de sécurité à cause de la facilité de l'ingénieurie à rebours sur cette technologie.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    oui la base de données est sur un serveur distant

    Le logiciel teste les identifiants du client sur la base de données.

    Mais pour tester, je dois mettre mon nom d'utilisateur et mot de passe pour me connecter à la base.

    Tu as raison en ce qui concerne le MD5. J'ai trouvé ceci sur le web:

    http://www.developpez.net/forums/d35...ryptage-passe/

    Je pensais mettre les identifiant dans le fichier app.conf puis le crypter.

Discussions similaires

  1. Mots de passe pour Acces distant
    Par wagui31 dans le forum Windows 7
    Réponses: 4
    Dernier message: 18/07/2012, 19h52
  2. Mot de passe pour accès serveur 2003
    Par paikan06 dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 07/11/2011, 11h28
  3. Réponses: 11
    Dernier message: 24/05/2011, 09h50
  4. [Toutes versions] Pas le utilisateur + mot de passe pour modifier Base de données Acces97
    Par MASSAKA dans le forum Access
    Réponses: 4
    Dernier message: 04/08/2010, 11h44
  5. mot de passe pour accés disque dur
    Par david06600 dans le forum Windows XP
    Réponses: 5
    Dernier message: 03/08/2006, 08h32

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