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

C# Discussion :

App config et encryption


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut App config et encryption
    Bonjour,

    Je cherche à encrypter mes chaînes de connexions dans mon ficher app.exe.conf. J'ai donc fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Configuration conf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                ConnectionStringsSection section = conf.GetSection("connectionStrings") as ConnectionStringsSection;
                if (!section.SectionInformation.IsProtected)
                {
                    section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
                }
                conf.Save();
    Cela marche bien sur mon poste, y pas de problème.

    Mais dès lors que je veut passer l'appli sur une autre machine j'ai une erreur et l'appli cesse de fonctionner.

    Après plusieurs tests j'en ai déduit qu'il faut mettre le fichier non crypté sur la machine cliente pour que celle-ci crypte la conf...

    Ce qui me pose un léger problème car l'objectif principal de la manip c'est justement de faire en sorte que la conf arrive déjà crypter sur la machine cliente...


    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 766
    Points
    766
    Par défaut
    Je crois que lorsque tu chiffres de cette manière c'est seulement valide sur le poste sur lequel la méthode a été appelée. Ça utilise un genre de code unique à la machine, ou dans Machine.config (machinekey), un truc dans le genre c'Est flou dans ma mémoire).

    Si tu veux chiffrer une seule fois et que ce soit valide pour plusieurs machine, tu dois chiffrer par toi même les données.

    Et quand tu veux la lire tu récupères la string et la déchiffre.
    Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs. Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'il peut engendrer.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    C'est ce que j'ai finalement voulu faire...
    Mais j'ai décidé de faire une petite application console externe mais impossible de modifier le fichier de conf ciblé...

    j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = cn };
                        Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
     
                        ConnectionStringsSection ConnectionString = new ConnectionStringsSection (configuration.ConnectionStrings);
    j'ai une erreur :
    Erreur 1 'System.Configuration.ConfigurationElement.this[System.Configuration.ConfigurationProperty]' est inaccessible en raison de son niveau de protection c:\users\****\documents\visual studio 2013\Projects\Cryptage\Cryptage\Program.cs 55 95 Cryptage

    Je ne peux pas modifier le fichier de conf d'un autre programme ?

    Je suis obligé de rajouter mon cryptage dans le lancement de l'appli de l’exécuter et de partager ce fichier de conf ?

    Sinon il y a toujour la première solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                ConnectionStringsSection section = conf.GetSection("connectionStrings") as ConnectionStringsSection;
                if (!section.SectionInformation.IsProtected)
                {
                    section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
                }
                conf.Save();
    Mais je ne trouve pas la solution pour utiliser la même clé sur chaque machine afin d'encrypter partout de la même façon.

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 152
    Points : 7 402
    Points
    7 402
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    J'ai deux questions :
    - que cherches-tu à cacher dans ta chaîne de connexion ?
    - quel SGBD utilises-tu ?

    En effet, si tu utilises SQL Server, il peut utiliser l'authentification Windows.
    A ce moment, ni l'utilisateur ni le mot de passe n'a besoin d'être stocké.
    Ils ne transitent pas non plus sur le réseau.

    Bref, que des gains.

    Penches-toi donc de ce côté si c'est SQL Server que tu utilises.
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    J'utilise SQL server et je voudrai cacher la chaine de connexion entière afin d'éviter de la donnée aux utilisateurs.

    Ma BDD est sur un serveur interne et l'appli tournera sur chaque poste.

    Je vais regarder pour l'authentification Windows mais je ne pense pas la mettre en place.

    A savoir que les comptes utilisateurs sont gérés avec active directory etc...

  6. #6
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Avoir une partie seulement d'un fichier crypter ne me semble pas très logique. Tu peut te créer une classe avec les propriété de chaine de connexion. La sérialiser en xml et crypter le fichier. Plus de problème d'accès au fichier App.config qui est gérer par le framework et dont tu ne peut pas déduire si il est ouvert sans lire plus de documentation a ce sujet.

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    Oui c'est aussi une solution.

    Merci beaucoup pour toutes ces réponses

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

Discussions similaires

  1. [VB.NET] Recuperer un paramettre avec App.Config
    Par Monster77 dans le forum Windows Forms
    Réponses: 21
    Dernier message: 31/12/2007, 14h06
  2. [SharpDevelop] app.config
    Par aeled dans le forum Sharpdevelop
    Réponses: 7
    Dernier message: 17/09/2006, 15h05
  3. Réponses: 9
    Dernier message: 04/05/2006, 17h33
  4. [VB.Net] Fichier app.config
    Par tomnie dans le forum Windows Forms
    Réponses: 24
    Dernier message: 28/03/2006, 10h33
  5. [vb.net][app.config] ou se trouve le fichier de config?
    Par graphicsxp dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/02/2006, 14h22

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