2009-03-06 17 views
16

Wie können Verbindungszeichenfolgen in einer Webanwendung aus Sicherheitsgründen am besten verwaltet werden? Ich habe es auf verschiedene Arten gemacht. Ich habe sie als Klartext web.config Einstellungsschlüssel gespeichert. Ich habe auch eine "Constants" -Klasse erstellt, die über öffentliche schreibgeschützte String-Eigenschaften für jede Verbindungszeichenfolge verfügt.Best Practices für die Verbindungszeichenfolge

Hat jemand irgendwelche Empfehlungen für die Verwaltung von Verbindungszeichenfolgen in einer Weise, dass ich keine Sorge haben werde, dass sie böswillig entdeckt werden? Ich bin definitiv offen für die Verschlüsselung.

Antwort

3

können Sie encrypt your connection strings in Ihrer Datei web.config.

Speichern von Verbindungszeichenfolgen in einer Klasse als Eigenschaft oder Konstante ist nicht sicher. Jeder, der einen Disassembler verwendet, kann Ihre Verbindungszeichenfolge sehen.

besten Weg ist die Konfiguration Verschlüsselung.

+0

Vielleicht möchten Sie auch SecureString anstelle einer regulären Zeichenfolge verwenden, damit ein Speicherabbild sie auch nicht aussetzt ... wenn Sie so geneigt sind. – Stimul8d

2

Sie können Teile Ihrer web.config verschlüsseln und entschlüsseln, indem Sie die Kommandozeilen-Tool mit aspnet_regiis:

Encrypt: aspnet_regiis -pef "connection" "c: \ Ordner \"

Decrypt: aspnet_regiis -pdf "connection" "c: \ Ordner \"

1

@vartec: es ist nicht ganz ein SNAFU ..

IIS kann tatsächlich verschlüsselten Text lesen, wenn Sie es mit Standard-.N verschlüsseln ET-Verschlüsselungsmechanismus, der keine UTF8- oder Unicode-Codierung unterbricht. Microsoft fördert dies auch als Best Practice.

Sie eine Probe aus dieser auf die Verschlüsselung Verbindungszeichenfolge sehen:

„How to: Sichere Verbindung Strings bei der Verwendung von Datenquellensteuer“

http://msdn.microsoft.com/en-us/library/dx0f3cf2.aspx

2

Wenn Sie die volle Kontrolle über den Server Sie können die Verbindungszeichenfolge auch in Ihrer Machine.Config speichern. Dies kann nützlich sein, wenn Sie viele Anwendungen haben, die alle mit demselben DB-Server arbeiten.

Ich bin mir nicht sicher, ob es sich lohnt, es zu verschlüsseln, da Sie in erster Linie auf den Server zugreifen müssen, um die machine.config anzuzeigen. Und wenn Ihr Server kompromittiert wurde, wird die Encyrption einen Hacker nicht davon abhalten, die Zugangsdaten aus der Konfigurationsdatei zu ziehen.

+0

Es schützt Sie vor dem versehentlichen Aussetzen des Inhalts von web.config, solange ein Angreifer seine eigene ASPX-Datei nicht in Ihr Anwendungsverzeichnis hochladen kann. – finnw

+0

Ein ähnlicher Vorbehalt gilt für Hashing-Benutzerkennwörter - er schützt Sie nur vor ausgelaufenen Datenbanksicherungen. Beide sind nutzlos, wenn ein Angreifer die Kontrolle über den Webserver übernimmt - aber es lohnt sich trotzdem. – finnw

+0

Wir machen das, wo ich so für unsere verschiedenen Server arbeite (dev, test, prod), also wird immer die passende Verbindungszeichenfolge für jeden verwendet. Funktioniert sehr gut. – spilliton