Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Datenbankzugriffsinformationen in Web.config sicher?
kingdave2nd - Fr 17.07.09 08:21
Titel: Datenbankzugriffsinformationen in Web.config sicher?
Hallo zusammen,
ich schreibe grade einen Webservice in den ich X-Wochen investiert habe, damit dieser mit möglichst vielen Datenbanksystemen arbeiten kann. Aktuell ist dabei MySQL, Oracle, SQL Server 2000 und höher supported. Gut und schön. Jetzt haben alle diese DBMS eins gemeinsam: Sie brauchen einen Servernamen, Usernamen, Password und Katalog. Da der connection string erst in der Datenbankzugriffsschicht dynamisch zusammengebaut wird, sind diese 4 Werte einzeln über die Settings Klasse in der web.config gespeichert (anstelle eines fertigen Conenction Strings).
Jetzt die spannende Frage:
Wie gut ist denn nun wirklich die web.config gegen Zugriffe von aussen abgesichert? Können User von aussen daran? Wie können Daten in der web.config sicher verschlüsselt werden? Aktuell habe ich zu einer Krücke gegriffen und den Password String wie folgt verschlüsselt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| string dbPwdDecryptionString = "sdo))jnujsd(fncvsnii*'Äun67FZZFsdfzt%&*";
public Service() { conn = new MdbConnectionMySql(Settings.Default.DBServer, Settings.Default.DBCatalog, Settings.Default.DBUid, Encryption.Decrypt(Settings.Default.DBPassword, dbPwdDecryptionString)); helper = new MdbHelper(conn); } |
Die Encryption Klasse enthält die Methoden "Encrypt" und "Decrypt" in denen ich mit dem MS TripleDES Provider die Verschlüsselung/Entschlüsselung vornehme. Aber das Kennwort steht hat im Klartext im Code (in der Prop "dbPwdDecryptionString"), und den kann ich ja nun wirklich nicht als sicheren Speicherort für Kennwörter ansehen. Wie gesagt, das ganze ist ja auch erstmal eine Krücke.
Die Variante die unter "http://msdn.microsoft.com/de-de/library/zhhddkxy%28VS.80%29.aspx" über aspnet_regiss.exe beschrieben ist, ist leider keine Alternative, da ich den Webservice dann nicht mehr bei einem Webhoster einsetzen könnte.
Nun hoffe ich, dass mich einer von euch auf den Pfad der Erleuchtung führen kann.
gruss Dave
Kha - Fr 17.07.09 11:48
Wenn der Server nicht gerade derart falsch konfiguriert ist, dass er .config-Dateien zum Download anbietet, kann der User doch unmöglich an die Daten kommen, eine Verschlüsselung ist unnötig.
Es sei denn, er bricht in den webserver ein, aber dann hast du wahrscheinlich sowieso keine Chance mehr ;) .
kingdave2nd hat folgendes geschrieben : |
ich schreibe grade einen Webservice in den ich X-Wochen investiert habe, damit dieser mit möglichst vielen Datenbanksystemen arbeiten kann. Aktuell ist dabei MySQL, Oracle, SQL Server 2000 und höher supported. |
OT: Hättest du dir mit einem OR/M wie NHibernate oder Entity Framework, die eine ganze Palette von DBs schon von Haus aus unterstützen, das Leben nicht einfacher machen können :| ? Ah, EF setzt du ja schon ein ;) .
kingdave2nd - Fr 17.07.09 14:43
Hi Kha,
danke für die Info, die sind halt so Dinge wo man sich als "Newbie" noch schwer tut (Klartextkennwörter haben halt immer nen komischen Beigeschmack).
Ja, das entity Framework nutze ich, ich habe halt auch einen grossen Teil der X-Wochen darauf verwendet jede Möglichkeit teilweise durchzuprogrammieren um zu schauen, wo die Stärken und Schwächen sind. Das ist das schöne an Projekten, wo kein Zeitdruck besteht (Allerdings muss man drauf achten, dass man irgendwann fertig wird ;-) ).
Allerdings habe ich mit dem Entitiy Framework grade auch so meine Probleme, wie du sicher schon im den andern Thread gesehen hast.
gruss Dave
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!