[C#] Hur läsa egendesignad och krypterad sektion i app.config? Blir galen...

Permalänk
Medlem

[C#] Hur läsa egendesignad och krypterad sektion i app.config? Blir galen...

Jag sitter och programmerar ett skrivbordsprogram där jag sparar lite saker i min app.config för projektet. Det är bland annat anslutningssträngar till databaser, men även några mycket viktiga SHA512-hashsummor samt deras respektive salt.

Anslutningssträngarna till databaserna lyckades jag kryptera lätt (sectionName är naturligtvis lika med connectionStrings i det här fallet):

ConfigurationSection section = config.GetSection(sectionName); if (!section.SectionInformation.IsProtected) { if (!section.IsReadOnly()) { section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider"); section.SectionInformation.ForceSave = true; config.Save(ConfigurationSaveMode.Modified); } }

När det senare kom till min egen sektion, gick det också bra. Såhär ser den aktuella delen av app.config ut:

<configSections> <sectionGroup name="myTestSection"> <section name="test" type="System.Configuration.DictionarySectionHandler"/> </sectionGroup> </configSections> <myTestSection> <test> <add key="hash" value="<hash>"/> <add key="salt" value="<salt>"/> </test> </myTestSection>

Öppnar jag min app.config så ser jag att både connectionStrings- och testsektionen är krypterade.

Nu kommer problemet...

När jag läser in mina anslutningssträngar fungerar det galant. Om jag försöker läsa in något från testsektionen däremot, så får jag ett fel: "Unrecognized attribute 'configProtectionProvider'. Note that attribute names are case-sensitive."

Såhär försöker jag läsa innehållet i testsektionen:

Hashtable settings = ConfigurationManager.GetSection("myTestSection/test") as Hashtable;

Om jag går till raden som undantaget nämner så hamnar jag på:

<test configProtectionProvider="RsaProtectedConfigurationProvider">

Jag har ta mig *** suttit och försökt allt möjligt de senaste två timmarna. Vad har jag missat?

Ett alternativ till den metod jag försöker mig på nu (kryptera egendesignad sektion) vore om jag på något sätt endast kunde kryptera vissa delar av appSettings som följer med .NET. Jag har tyvärr endast listat ut hur man krypterar sektioner (det är därför jag skapar en egen), men om någon vet hur jag krypterar enskilda medlemmar i en sektion så går det nog också bra.

Tack.

Permalänk
Medlem

gjorde en liten sökning och hittade det här;
Encrypting Passwords in a .NET app.config File

jag hoppas det är till någon hjälp.

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem
Skrivet av jovnas:

gjorde en liten sökning och hittade det här;
Encrypting Passwords in a .NET app.config File

jag hoppas det är till någon hjälp.

Nja, jag har ett slags huvudlösenord som kund har angett. Jag har då genererat en SHA512-hashsumma med salt som jag tidigare lagrade i app.config och krypterade, men nu var jag tvungen att spara andra saker i app.config som inte ska vara krypterad. Det gjorde att jag sökte mig till att skapa en egen sektion för bland annat hashsummorna och salten.

Det där verkar vara om användaren knappar in något eget i programmet, så sparar den ner det krypterat. Problemet är som sagt att jag redan har ett färdigt par med hash + salt, vilket gör att jag då måste hårdkoda det i programmet för att skriva till app.config, vilket knappast är säkert antar jag? Det går väl att öppna med exempelvis Reflector och titta.