app.config verschlüsseln

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Dirk2006.

    app.config verschlüsseln

    Hallo zusammen,

    ich möchte gern einen Teil meiner app.config verschlüsseln.

    Leider klappt das nicht wie geplant.

    Ein Teil der app.config sieht so aus und soll verschlüsselt werden.

    Quellcode

    1. <connectionStrings>
    2. <add name="DBString"
    3. connectionString="blablabla"
    4. providerName="blablabla"/>
    5. </connectionStrings>


    Die Datei liegt im .....\bin\Debug - Verzeichnis. Und soll nach dem Start der Anwendung verschlüsselt werden.

    Ich probiere es derzeit mit dem diesem Code:

    Quellcode

    1. Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
    2. Dim section As ConnectionStringsSection = TryCast(config.GetSection("connectionStrings"), ConnectionStringsSection)
    3. If Not IsNothing(section) = True Then
    4. If section.SectionInformation.IsLocked = False Then
    5. If section.SectionInformation.RequirePermission = False Then
    6. section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider")
    7. section.SectionInformation.ForceSave = True
    8. config.Save(ConfigurationSaveMode.Full, True)
    9. End If
    10. End If
    11. End If


    Bin für jede Hilfe dankbar.

    Dirk
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @Dirk2006
    Ich verschlüssle meinen Connectionstring immer so:

    VB.NET-Quellcode

    1. Private Shared Sub ProtectConfig(Optional Protect As Boolean = True)
    2. Dim conf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
    3. Dim sect = conf.GetSection("connectionStrings") '("appSettings")
    4. If sect IsNot Nothing Then
    5. If Not sect.IsReadOnly() Then
    6. With sect.SectionInformation 'DataProtectionConfigurationProvider, RsaProtectedConfigurationProvider, DpapiProtectedConfigurationProvider
    7. If Protect = .IsProtected Then Return
    8. If Protect Then .ProtectSection("DataProtectionConfigurationProvider") Else .UnprotectSection()
    9. .ForceSave = True
    10. End With
    11. conf.Save(ConfigurationSaveMode.Modified)
    12. End If
    13. End If
    14. End Sub

    msdn.microsoft.com/de-de/library/ms254494(v=vs.110).aspx
    Hat zufällig jemand von euch mit der EnterpriseLibrary erfahrung?
    Meine bisherigen Versuche die app.config zu verschlüsseln haben dazu geführt, dass diese den ConnectionString nicht mehr lesen kann, da dieser wohl schon vor Aufruf der Main() gelesen wird, und ich so keine Chance habe den ConnectionString rechtzeitig zu entschlüsseln.
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen
    Erstmal vielen Dank für die Antworten....

    mrMo....sicher auch eine Möglichkeit, aber ich arbeite lieber mit Konfigurationsdateien......

    VB1963....das Beispiel werde ich heute Abend mal testen .... vielen Dank......

    EaranMaleasi....keine Ahnung :(.......

    exc-jdbi.....schade, den Artikel hätte ich gern gelesen.......

    Dirk
    Bei mir klappt das einfach nicht.....

    Wo hast Du denn die app.config liegen?

    Auch im Verzeichnis .....bin\debug mit der "Projekt.exe" ??

    Hast Du unter den Eigenschaften der app.config die Einstellung - Datei immer kopieren ??

    Ich habe es mal anders probiert:

    Quellcode

    1. Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
    2. Dim section As ConnectionStringsSection = TryCast(config.GetSection("connectionStrings"), ConnectionStringsSection)
    3. If Not IsNothing(section) = True Then
    4. If section.SectionInformation.IsLocked = False Then
    5. If section.SectionInformation.RequirePermission = False Then
    6. If section.SectionInformation.IsDeclared = True Then => Fehler
    7. section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider")
    8. section.SectionInformation.ForceSave = True
    9. config.Save(ConfigurationSaveMode.Full, True)
    10. end if
    11. end if
    12. endif
    13. end if


    Jetzt bekomme ich den Fehler, dass er in der app.config den "section-Teil" nicht findet!?

    Dirk
    Finde ich komisch. Die app.config muss Build Action = None haben.

    Die app.config kann man ganz normal mit rechte MAusklick auf das Projekt >> Add >> New Item >> XML-File erstellen, und dann den oben erwähnten <connectionStrings> eifügen.

    Der Rest steht im Link wie von @VB1963 erwähnt noch gut beschrieben.

    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()

    Bei mir lauft alles so, wie ich es mir vorstelle. Das sogar im Debug-Modus.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Imports System.Xml
    4. Imports System.Windows.Forms
    5. Imports System.Configuration
    6. Public Module Module1
    7. Public Sub Main()
    8. Dim ConfigNameExe As String = Application.ExecutablePath
    9. 'WICHTIG: Vercrypten (=True)
    10. ProtectConfig(ConfigNameExe, False)
    11. GetData(ConfigNameExe)
    12. Console.ReadLine()
    13. End Sub
    14. Private Sub ProtectConfig(ByVal ConfigNameExe As String, ByVal Protect As Boolean)
    15. Dim conf = ConfigurationManager.OpenExeConfiguration(ConfigNameExe)
    16. Dim sect = DirectCast(conf.GetSection("connectionStrings"), ConnectionStringsSection)
    17. If sect IsNot Nothing Then
    18. If Not sect.IsReadOnly() Then
    19. With sect.SectionInformation
    20. If Protect = .IsProtected Then Return
    21. If Protect Then
    22. .ProtectSection("DataProtectionConfigurationProvider")
    23. Else : .UnprotectSection()
    24. End If
    25. .ForceSave = True
    26. End With
    27. conf.Save(ConfigurationSaveMode.Modified)
    28. Console.WriteLine("Protected={0}", sect.SectionInformation.IsProtected)
    29. End If
    30. End If
    31. End Sub
    32. Private Sub GetData(ByVal ConfigNameExe As String)
    33. Using reader As New XmlTextReader(ConfigNameExe & ".config")
    34. While reader.Read()
    35. Select Case reader.NodeType
    36. Case XmlNodeType.Element : Console.WriteLine("<" + reader.Name & ">")
    37. Case XmlNodeType.Text : Console.WriteLine(reader.Value)
    38. Case XmlNodeType.None : Stop
    39. Case XmlNodeType.EndElement ': Console.WriteLine
    40. End Select
    41. End While
    42. Console.WriteLine()
    43. End Using
    44. End Sub
    45. End Module


    Freundliche Grüsse

    exc-jdbi