Autor Beitrag
kingdave2nd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: Fr 17.07.09 08:21 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 ;) .
user profile iconkingdave2nd hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: 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