Connectionstrings verschlüsseln

Die Konfigurationsdaten sind auch in einer komplierten Anwendung nicht sicher. Zudem möchte man nicht bei jeder Änderung der Konfiguration die Anwendung neu erstellen. Daher ist das Ablegen der Konfigurationsdaten in Konfigurationsdateien die bessere Wahl. Jedoch müssen diese geschützt und daher verschlüsselt werden. Ich habe dies mit dem ProtectedConfigurationProvider gelöst.

Es stehen mehrere Provider zur Auswahl. RSA und DPAPI haben nicht funktioniert. Das kann an meinem lokalen Betriebssystem liegen oder die ProtectedConfigurationProvider unterstützen es auf .NET Core aus bestimmten Gründen nicht. DPAPI ist auch nicht geeignet. Jedoch funktioniert der DataProtectionConfigurationProvider. Das muss noch genauer geprüft werden, ob die Verwendung RSA vollwertig ersetzt. Die Konfiguration der Anwendung wird mit dem ConfigurationManager verwaltet. Zur Verwendung vom ConfigurationManager in der .NET Core Version, muss dieser mit dem NuGet-Paketmanager installiert werden.

Auf dem Webserver müssen dann die Schreibrechte gesetzt und zugelassen werden. Anschließend muss die Anwendung ausführt werden, damit die Verschlüsselung erfolgt. Die Schreibrechte dann wieder sperren, wenn diese nicht vorhanden sein sollen. Bei der Entwicklung kann man im Projekt eine app.config anlegen und dort die Konfigurationsdaten hinterlegen. Wenn die Seite compiliert wird, befinden sich diese Konfigurationsdaten in der *.dll.config. Die app.config wird bei der Veröffentlichung mit ausgegeben, obwohl bei mir in den Eigenschaften "nicht kopieren" angegeben ist. Das muss ich noch nachsehen, wie das verhindert wird. Denn wenn vergessen wird die vertraulichen Daten zu entfernen, dann sind sie einsehbar, da diese Daten nicht verschlüsselt werden. Sondern die in der *.dll.config.