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

Accès aux données Discussion :

Crypter le mot de passe d'une chaine de connexion SQL Server


Sujet :

Accès aux données

  1. #1
    Membre actif

    Inscrit en
    Novembre 2003
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 168
    Points : 232
    Points
    232
    Par défaut Crypter le mot de passe d'une chaine de connexion SQL Server
    Bonjour,

    J'utilise une chaine de connexion dans mon web.config pour accéder à SQL Server. Cette chaine d econnexion a le format suivant :
    Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;
    Ce qui me dérange c'est que le mot de passe y est indiqué en clair.
    En effectuant une recherche j'ai trouvé que je peux crypter toute la section connectionStrings de mon web.config grâce à la commande :
    aspnet_regiis -pef "connectionStrings" chemin
    Or moi je préfère garder cette section en clair et crypter uniquement le mot de passe. Est-ce possible ? comment procéder ?!

    Merci par avance,

  2. #2
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    Ok alors, pour faire simple :
    Tout dépend du niveau de cryptage que tu veux obtenir,
    s'il faut "juste" rendre illisible la chaine, rien ne t'empèche d'utiliser un binaryWriter / binaryReader pour crypter ta chaine (il s'agit juste d'un cryptage humain.

    Si par contre tu veux aller plus loin, le framework dispose de toute une panoplie de classes de cryptage dans le namespace System.Security.Cryptography.
    Exemples : RijndaelManaged, AesManaged, DES, etc (pour un cryptage symétrique)

    Dans les deux cas, tu vas devoir centraliser la méthode qui crée les SqlConnection (méthode statique appelée partout où tu as besoin de récupérer un objet de connection.

    Cette méthode doit réaliser ceci :
    Dispose-je d'une chaine de connexion déjà décriptée ?

    * NON :
    - récup de la chaine de cnn,
    - instanciation de la sqlconnection,
    - remplacement du mot de passe de la sql connection par sa version décryptée,
    - garder trace de la chaine de connection avec le mot de passe décrypté,
    - retourne la sql cnn,

    * OUI
    - retourne la sql cnn

    voilou
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  3. #3
    Membre actif

    Inscrit en
    Novembre 2003
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 168
    Points : 232
    Points
    232
    Par défaut
    Je comprends donc qu'il n y a pas déjà de mécanisme prédéfini et qu'il faut "réfléchir" pour en trouver un. Dans ton exemple, supposons que je crypte le mot de passe avec un algorithme symetrique (3-DES), quel est le meilleur endroit pour enregistrer la clé de cryptage/decryptage ?!

    Ce que je crains, c'est que quelqu'un qui désassemble mon code puisse déterminer où est stocké ma clé ainsi que l'algorithme de cryptage utilisé, et il n'aura aucun problème à decrypter le mot de passe qui est dans ma chaine de connexion.

  4. #4
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    J'ai eu a réaliser ca une fois, pour crypter la chaine deux options :

    1) tu prévois dans ton application, style module admin, des champs pour saisir les informations de connextion, et tu enregistres dans ta config (on peut le faire via l'objet renvoyé par ConfigurationManager.OpenExeConfiguration () )

    2) tu prévois un outil extérieur à l'application qiu permet de crypter ...

    perso je préfère la solution 1

    Concernant le désassemblage : ya plein d'outils d'obfuscation efficaces (gratuit ou payant), moi j'utilise Crypto Obfuscator for .net (payant). mais inviolable (reflector plante lorsqu'il tente d'analyser l'assembly).
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  5. #5
    Membre actif

    Inscrit en
    Novembre 2003
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 168
    Points : 232
    Points
    232
    Par défaut
    Merci,

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    en meme temps tu parle là d'un web.config...

    on parle donc d'un applicatif typiquement ASP.NET ou hébergé sur IIS...
    si tel est le cas, le web.config ne traverse pas le réseau et sa consultation depuis l'extérieur est impossible si ASP.NET est activé sur IIS.
    donc que le mot de passe soit en clair... c'est pas particulièrement gênant, meme en hébergement mutualisé, car à part les admins... personne n'y a accès et de toute facon ya fort à parier qu'ils te fournissent la base aussi à contacter, donc la chaine de connexion, ils doivent la connaitre aussi...

    Ensuite si tu veux vraiment protéger dans ce cas la partie chiffrée de ta config... envisage un obfuscateur de code payant genre XENOCODE qui va transformer ton code en code natif et l'obfusquer... là on pourra dire que à moins d'être vraiment acharné... tu aura déjà dissuadé la majorité des personnes...
    et donc tu pourra utiliser n'importe quelle méthode de chiffrage/déchiffrage...

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

Discussions similaires

  1. Crypter des mots de passe dans une base de données WordPress
    Par DarckCrystale dans le forum WordPress
    Réponses: 11
    Dernier message: 26/02/2021, 23h05
  2. Crypter un mot de passe avec une passphrase
    Par NRLinker dans le forum Sécurité
    Réponses: 2
    Dernier message: 07/04/2013, 19h24
  3. Chaine de connexion SQL Server en Java
    Par cheikhoufia dans le forum Persistance des données
    Réponses: 2
    Dernier message: 07/05/2012, 19h37
  4. Crypter le mot de passe dans une TextBox
    Par Stefounette dans le forum JavaFX
    Réponses: 3
    Dernier message: 31/03/2010, 14h28
  5. problème chaine de connexion sql server 2005 express / c#
    Par tofke dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 17/01/2009, 17h37

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