Es ist egal, wo die verschlüsselten Daten gespeichert sind, es ist wichtig, wie sie verschlüsselt sind.
Verschlüsselte Abschnitte in einer web.config werden normalerweise mit der Data Protection API verschlüsselt , die extrem schwer zu knacken ist, ohne den gesamten Computer zu beeinträchtigen. Sie können auch einen RSA-Schlüsselcontainer verwenden, der ähnlich ist (es ist schwierig, ihn von der Maschine zu entfernen).
Wenn Sie die verschlüsselte Zeichenfolge in der DLL speichern möchten, ist das in Ordnung, denke ich, obwohl es von Natur aus nicht sicherer ist als eine verschlüsselte web.config (jeder kann mit Reflector in diese DLL hineinschauen ) und es ist offensichtlich schwieriger, sie zu ändern (Sie) müsste neu kompilieren). Noch viel wichtiger ist jedoch, wie diese verschlüsselte Zeichenfolge generiert wurde. Vermutlich verwenden Sie nicht dieselben Anbieter wie für eine verschlüsselte web.config. Was verwenden Sie also?
Ein Verschlüsselungsschema ist nur so stark wie der private Schlüssel oder das gemeinsame Geheimnis. Wenn dieser Schlüssel auch in Ihrer Assembly gespeichert ist, haben Sie möglicherweise überhaupt keine Verschlüsselung. Wenn es in einer externen Datenbank gespeichert ist, stellt sich die Frage, wie die Verbindungszeichenfolge dieser Datenbank gesichert ist. Dies kann eigentlich nur zu einer insgesamt schwächeren Sicherheit führen.
Auf der anderen Seite, wenn Sie ein Service - Provider und die Verbindungszeichenfolge waren mit einem verschlüsselten wurden Benutzer - Passwort, das wäre dann mehr sicherer als eine statische Maschine Schlüssel. Wenn Sie zum Verschlüsseln Benutzerkennwörter verwenden, ist es jedoch ziemlich unwahrscheinlich, dass Sie die verschlüsselten Daten in Ihrer Assembly fest codieren, da sie als Reaktion auf Benutzeraktionen (nicht Entwickleraktionen) generiert und gespeichert werden müssen.
Wirklich kann ich nicht an zu viele Situationen denken, in denen das harte Codieren einer (verschlüsselten) Verbindungszeichenfolge in der DLL sicherer ist als das Verschlüsseln des relevanten Abschnitts web.config. Im besten Fall erhöht dies nur die Unannehmlichkeit, im schlimmsten Fall wird auf einige plump geschriebene, mit Löchern durchsetzte benutzerdefinierte Sicherheitsfunktionen zurückgegriffen. Tun Sie sich selbst einen Gefallen und tun Sie, was Microsoft empfiehlt - verschlüsseln Sie einfach Ihre web.config, wenn dort vertrauliche Daten gespeichert sind.