[VB.net] MySettings Encryption

Pagina: 1
Acties:

Onderwerpen


  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 07-10 14:00

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Hey mensen,
Ik ben bezig met een app waarvan ik de UserSettings en/of de ApplicationSettings versleuteld wil opslaan.
Ben al een aantal samples en websites verder. Het is mogelijk gebruik te maken van standaard versleuteling:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Private Sub EncryptConfigSection(ByVal sectionKey As String)
        Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
        Dim section As ConfigurationSection = config.GetSection(sectionKey)

        If Not (section Is Nothing) Then
            If Not section.SectionInformation.IsProtected Then
                If Not section.SectionInformation.IsLocked Then

                    section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider")
                    section.SectionInformation.ForceSave = True
                    config.Save(ConfigurationSaveMode.Full)

                End If
            End If
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        EncryptConfigSection("userSettings")
    End Sub


Alleen in mijn config blijf ik steeds de onversleutelde data zien:
XML:
1
2
3
4
5
6
7
<applicationSettings>
        <EncryptedSettings.My.MySettings>
            <setting name="Password" serializeAs="String">
                <value>Plain text password</value>
            </setting>
        </EncryptedSettings.My.MySettings>
    </applicationSettings>

EncryptedSettings is trouwens de naam van mij test applicatie.

Ik heb al wat lopen spelen en heb ook al eens alle ConfigSections versleuteld, maar het deeltje wat ik in mijn My.Settings heb staan dat versleutelt niet.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zonder me verder in de code of het daadwerkelijke probleem verdiept te hebben: kijk je wel naar de juiste config? Je hebt er een aantal: die in je source directory, die in je bin\debug en bin\release etc. Dat is 't eerste wat in me opkomt.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 07-10 14:00

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Yup, ik heb de config open in Notepad++
Als ik alles in encrypt gooi dan encrypt de rest uit de file wel. Voor connection string's enzo werkt het wel, er komt dan iets in de trand van:
<EncryptedData>
<CipherData>

Verwijderd

Dus als ik het goed begrijp wordt een bepaald gedeelte van je config file wel via encryptie opgeslagen en een ander gedeelte niet?
Kan je een versimpeld voorbeeld hiervan posten? Dus gewoon 1 node wel en 1 node niet encrypted met de bovenliggende parent_nodes van beide tot de root?

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 07-10 14:00

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Ik heb er een aantal uitgehaald omdat het anders zo'n lap text gaat worden.
Maar dit is de strekking:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="EncryptedSettings.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <system.windows.forms configProtectionProvider="DataProtectionConfigurationProvider">
        <EncryptedData>
            <CipherData>
                <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAMFbJHQq78kOyuwxUg965/gQAAAACAAAAAAADZgAAqAAAABAAAACHkECxedeUeYNAGpEClQZeAAAAAASAAACgAAAAEAAAAOf+JNlUnC7k6U95q4lAxh5gAAAAO3HuXy+KcZYAhUARNJ5jhilEujWtzCBpPBDGwmMNyob+nLFr2Hyo5VMvdBIBMizhFVWVasIRMyRHc7PXDCnE144xkZtZmNeieTTI5I+aN69xaruWQ9R3JDdiPA2HlXcEFAAAABLYQpnBWQCbH07Y+1ATLJhrowJ0</CipherValue>
            </CipherData>
        </EncryptedData>
    </system.windows.forms>

    <system.diagnostics configProtectionProvider="DataProtectionConfigurationProvider">
        <EncryptedData>
            <CipherData>
                <CipherValue>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</CipherValue>
            </CipherData>
        </EncryptedData>
    </system.diagnostics>
    <applicationSettings>
        <EncryptedSettings.My.MySettings>
            <setting name="Password" serializeAs="String">
                <value>Plain text password</value>
            </setting>
        </EncryptedSettings.My.MySettings>
    </applicationSettings>
</configuration>

En als ik het password in de UserSettings zet ipv. de ApplicationSettings, dan doet hij het ook niet. Dus dat heb ik al geprobeerd :P

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 11-10 11:15

dj_vibri

int(e^x) = f(u)^n

Wat is de waarde van de "sectionKey" parameter?

Edit:

Voor zover ik het uit mijn hoofd weet zou het iets moeten zijn als:

userSettings/EncryptedSettings.My.MySettings

[ Voor 57% gewijzigd door dj_vibri op 22-09-2011 13:33 ]

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 07-10 14:00

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
dj_vibri schreef op donderdag 22 september 2011 @ 13:29:
Wat is de waarde van de "sectionKey" parameter?
De aanroep van de functie staat eronder -> userSettings
Maar voor die laatste xml (waar ik "alles" encrypt) heb ik deze code gebruikt:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    Private Sub EncryptConfigSection()
        Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

        For Each section As ConfigurationSection In config.Sections

            Try
                If Not (section Is Nothing) Then
                    If Not section.SectionInformation.IsProtected Then
                        If Not section.SectionInformation.IsLocked Then
                            section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider")
                            section.SectionInformation.ForceSave = True
                            config.Save(ConfigurationSaveMode.Full)
                        End If
                    End If

                End If
            Catch ex As Exception

            End Try

        Next

    End Sub

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 11-10 11:15

dj_vibri

int(e^x) = f(u)^n

oeps... over gezien :)
Heb mijn vorige post aangepast nadat ik merkte dat je enkel "userSettings" doorgaf...

* dj_vibri is benieuwd... :+

[ Voor 8% gewijzigd door dj_vibri op 22-09-2011 13:40 ]

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Verwijderd

Zover ik kan zien (kan het helaas momenteel niet testen omdat ik op werk zit) moet je inderdaad je section veranderen naar de MySettings sectie.

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 07-10 14:00

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Verwijderd schreef op donderdag 22 september 2011 @ 13:46:
Zover ik kan zien (kan het helaas momenteel niet testen omdat ik op werk zit) moet je inderdaad je section veranderen naar de MySettings sectie.
Mja, dat dacht ik ook, en heb ook al Usersettings.My.Mysettings en alle varianten daarop geprobeerd.
En je zou ook verwachten dat het met die For each section goed zou moeten gaan...

Verwijderd

Misschien schiet ik hiermee volledig naast de maan en niet eens in de buurt van wat sterren, maar als ik kijk naar de protectsection documentatie dan zie ik dat het om een protectionprovider gaat, alhoewel de naamgeving doet vermoeden dat je het naar een sectie moet laten verwijzen.

Je geeft met je for each al aan welke sectie je hebt, je moet dan alleen nog de protectionprovider de juiste laten zijn (lijkt mij).

Nogmaals, zou het graag even testen en dan pas sturen maar heb hier niets!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 11-10 11:15

dj_vibri

int(e^x) = f(u)^n

Krijg je uberhaupt de "custom" sectie terug als je bv. in een console applicatie een foreach uitvoert?

code:
1
2
3
4
 foreach (ConfigurationSection item in config.Sections)
            {
                Console.WriteLine(item.SectionInformation.SectionName.ToString());
            }


Mij lijkt het dat als je zou debuggen hij bij de "config.GetSection(sectionKey) " NULL gaat terug geven...

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 07-10 14:00

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
dj_vibri schreef op donderdag 22 september 2011 @ 14:25:
Krijg je uberhaupt de "custom" sectie terug als je bv. in een console applicatie een foreach uitvoert?
Mij lijkt het dat als je zou debuggen hij bij de "config.GetSection(sectionKey) " NULL gaat terug geven...
Nou.... het gaat voor appSettings schijnbaar wel goed , ik heb even een output gedraaid van alles secties:

system.data succesfully encrypted
windows encrypting failed This configuration section cannot be encrypted.
system.webServer succesfully encrypted
mscorlib encrypting failed This configuration section cannot be encrypted.
system.data.oledb succesfully encrypted
system.data.oracleclient succesfully encrypted
system.data.sqlclient succesfully encrypted
configProtectedData encrypting failed This configuration section cannot be encrypted.
satelliteassemblies encrypting failed This configuration section cannot be encrypted.
system.data.dataset succesfully encrypted
startup encrypting failed This configuration section cannot be encrypted.
system.data.odbc succesfully encrypted
system.diagnostics succesfully encrypted
runtime encrypting failed This configuration section cannot be encrypted.
system.codedom succesfully encrypted
system.runtime.remoting encrypting failed This configuration section cannot be encrypted.
connectionStrings succesfully encrypted
assemblyBinding encrypting failed This configuration section cannot be encrypted.

appSettings succesfully encrypted
system.windows.forms succesfully encrypted

AppSettings mag schijnbaar wel........

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Kijk eens of hij werkt als je 'm met de hand uitvoert? Visual Studio start namelijk de {App}.vshost.exe, wat inhoud dat de {App}.vshost.exe.config zal worden aangepast, en niet de {App}.exe.config die je zou verwachten. Daar krijg ik namelijk wel:

XML:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <applicationSettings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
      <CipherData>
        <CipherValue>AQAAANC...oC9juZ+Bx2M=</CipherValue>
      </CipherData>
    </EncryptedData>
  </applicationSettings>
</configuration>


/Edit: ik bedoel natuurlijk dubbelklikken of uitvoeren in een console, maar ik ben blij dat het opgelost is.

[ Voor 52% gewijzigd door Feanathiel op 23-09-2011 21:30 . Reden: XML-voorbeeld toegevoegd, edit waarvoor geen nieuwe post noodzakelijk was ]


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 07-10 14:00

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Feanathiel schreef op donderdag 22 september 2011 @ 20:59:
Kijk eens of hij werkt als je 'm met de hand uitvoert? Visual Studio start namelijk de {App}.vshost.exe, wat inhoud dat de {App}.vshost.exe.config zal worden aangepast, en niet de {App}.exe.config die je zou verwachten. Daar krijg ik namelijk wel:
Wat bedoel je met: met de hand uitvoeren? <-Ben benieuwd :D

Ik heb alle .config files die ik tegen ben gekomen in mijn dir al open gehad in Notepad++, je krijgt dan een udpate als er een config wijziging is.
En ik ga er even vanuit dat ik de juiste config file te pakken heb, aangezien de andere section's wel versleuteld worden.

Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 07-10 14:00

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Opgelost!!

Bovenin de config xml staat:
<configSections>
<sectionGroup name="applicationSettingtype>


Er wordt een nieuwe sectionGroup aangemaakt voor ApplicationSettings, dit is dus wat anders (schijnbaar) dan AppSettings :p
Ik doe nu:
Visual Basic .NET:
1
2
3
4
5
6
7
Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

Dim SectionGroup As ConfigurationSectionGroup
SectionGroup = config.SectionGroups("applicationSettings")

Dim section As ConfigurationSection
section = SectionGroup.Sections("EncryptedSettings.My.MySettings")


Hierna is het dan wel mogelijk om de section te protecten

Acties:
  • 0 Henk 'm!

  • PowerUp
  • Registratie: Februari 2006
  • Laatst online: 10-10 13:40
oeps, verkeerde knop :X

[ Voor 74% gewijzigd door PowerUp op 23-09-2011 09:25 ]

Pagina: 1