Speichern von Verbindungszeichenfolgen in der Maschine.config vs speichert Sie in web.config
Für einen dedizierten server, ist es besser, speichern Sie die Verbindungszeichenfolge in der web.config oder machine.config? was die Vorteile und Nachteile des jeweiligen Ansatzes?
Dank
Edit: ich bin besorgt über die Sicherheit hier, also, die Frage ist, welcher Ansatz mehr sicher.
- In beiden Orten sollten Sie verschlüsseln Sie (obwohl wenn Sie Vertrauenswürdige verbindungen, ich würde nicht sorgen, dass viel). Es ist ein ziemlich praktisches Werkzeug für das jetzt in somewebguy.wordpress.com/2009/07/16/...
- Link im Kommentar oben tot; jetzt unter hugoware.net/blog/encrypt-your-web-config-please
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde immer gehen mit web.config mit der Begründung, dass das ist, wo jeder es erwarten würde. Es gibt keinen Sinn, dass die person, die zu pflegen der web-site keinerlei weitere Schwierigkeiten durch speichern von Verbindungszeichenfolgen in einem ungewöhnlichen Ort.
ZUSÄTZLICHE
Basierend auf der zusätzlichen information, dass der OP ist daran interessiert, den Aspekt Sicherheit eher als und Allgemeinen Grund, den ich Hinzugefügt haben, die folgenden.
Ich würde immer noch nicht zum speichern von Verbindungszeichenfolgen in der Maschine.config. Wenn Sie tun, dass jeder .NET-Anwendung läuft auf dem Rechner Zugang hat Ihre connection strings.
web.config ist eine geschützte Datei. IIS nicht servieren es standardmäßig, wenn Sie etwas tun, um misconfigure es.
Ich behalte lieber meine connection strings in der Maschine.config.
Meine Verbindung strings sind unterschiedlich zwischen DEV -, QA-und PROD-Umgebungen, und wenn ich hielt Sie in der web.config konnte ich nicht sicher wegblasen mein Ziel-Verzeichnis an und kopieren Sie den neuen code. Oder ich würde daran denken müssen, bereitstellen von allem, was aber die web.config, schafft dies Probleme, wenn andere Teile der web.config ändern.
Es hängt von Ihrer situation, aber wenn wird es ein wenig kompliziert ist das Risiko, dass die falsche connection-string in der falschen Umgebung ist einfach zu groß. Wir haben schon Situationen gehabt, wo die Prüfung war, schlagen den falschen Datenbanken, weil Sie die Verbindungszeichenfolge wurde versehentlich verschoben. Maschine.config wird verwendet für die Maschinen-spezifische Elemente - daher der name. Es wird nie verschoben von Maschine zu Maschine.
So, in meinem Rechner.config habe ich mehrere connection strings wie blogConnString, forumConnString, projectxConnString, etc. Ich denke nicht, dass diese mixing-Einstellung für verschiedene Websites, halte ich es für das halten der Maschine Einstellung der Maschine.config.
Waren Sie besorgt über die Sicherheit, ich denke, sobald Sie auf das Feld, Sie sind ebenso gesichert. Aber wenn die Verbindungszeichenfolge in der web.config es endet in der Regel bis in die source-control, developer ' s Schreibtische, in backup-Dateien, die in installieren von Plänen, die Bereitstellung sets, etc. Dies macht das web.config Weg weniger sicher zu mir.
Schließlich ein weiterer Ansatz ist, um es in eine völlig andere config-Datei (sagen WebEnvironment.confg), das ist dann auf die in Ihrer Website.config. Diese Datei würde sitzen in einem Verzeichnis, die nicht körperlich in Ihre web-site, aber ist praktisch unter Ihre Website. Weitere details sind HIER.
Ich, persönlich, würde nie meine Verbindungszeichenfolgen in meinem Rechner.config-Datei, die immer nur im web.config.
Du sagst, es ist ein dedizierter server, aber dieser server für eine einzelne web-Anwendung?
Wenn nicht, haben Sie jetzt eine einzelne Datei (machine.config) das ist der efziente Austausch von Konfigurationsdaten für mehrere (wahrscheinlich un-bezogene) web-Anwendungen. Je nach Anzahl der Anwendungen, und wenn Sie jemals benötigt, um Sie zu verschieben auf einen anderen server, mit der Maschine.config könnte sehr chaotisch.
Selbst wenn der server ist gewidmet, um eine einzelne web-Anwendung, werden Sie wahrscheinlich ausführen Sie Ihre Entwicklung und Tests auf anderen Maschinen. Da die Maschine.config ist in der Regel nicht, dass eine Datei in der Datei-set, eine ASP.NET web-Anwendung-Projekt, werden Sie wahrscheinlich haben, um zu gehen aus dem Weg, der zum bereitstellen der Maschine.config für jedes der verschiedenen dev - /test - /Produktions-Maschinen, und sicherzustellen, dass andere (nicht-Verbindungs-string) bezogene Konfiguration in Ihnen ist das richtige für die Maschine.
Über das web.config zum speichern von Datenbank-Verbindungszeichenfolgen macht durchaus einen logischen Sinn und ist völlig erwartet, von fast allen ASP.NET Entwickler, selbst wenn Sie mehrere Anwendungen haben, die genau die gleiche Datenbank auf der exakt gleichen Datenbank-server. Halten Sie diese Konfiguration in der web.in der config von jeder Anwendung ermöglicht es jedem, solche Anwendungen werden mehr eigenständig und nicht abhängig einige andere "außen" - Datei.
Ich in der Regel anzeigen der Maschine.config und etwas, dass das framework selbst verwendet, und es gehört auf eine Maschine und ist spezifisch für die Maschine. Ich gehe sehr selten in Berührung und es mich. Ich sehe das web.config als Datei, ist Bestandteil Ihrer web-Anwendung-Projekt, und "bewegt" mit diesem Projekt, wie es sich bewegt und ist bereitgestellt, um verschiedene Maschinen.
Auch nicht vergessen, dass eine Menge von dem, was ist definiert in der Maschine.config kann "außer Kraft gesetzt" auf einer basis pro Anwendung durch die Neudefinition bestimmten configuration-elements in einer bestimmten Anwendung web.config-Datei.
Natürlich, es gibt ein paar triftige Gründe, um die Bearbeitung/änderung Ihrer Maschine.config-Datei (z.B. mehrere Webserver in einer Webfarm werden wahrscheinlich brauchen Dinge wie Verschlüsselung/Entschlüsselung Schlüssel innerhalb der Maschine.config synchronisiert werden), aber ich glaube nicht, dass Datenbank-Verbindungszeichenfolgen sind einer dieser Gründe.
Wenn Sicherheit ist das primäre Anliegen, konzentrieren Sie sich auf das sperren der Datenbank-und Benutzer-Berechtigungen. Der Sicherheits-Unterschied zwischen web/Maschine .config ist minimal. Colin ' s Antwort ist richtig. Ich würde gestimmt haben, nach oben oder kommentiert es, aber ich habe nicht die moxie noch!
Gibt es eine Menge guter Punkte, hier. JBrooks's-Umgebung ist am nächsten an mir, aber am Ende, ich Stimme mit dem setzen von Verbindungszeichenfolgen in der Maschine.config.
Ich Stimme mit OJ aber nicht aus dem Grund, die er zitiert, hier. Ich möchte darauf hinweisen, wie JBrooks sagte, Verbindungszeichenfolgen werden sehr wahrscheinlich andere Anmeldeinformationen verwenden, die in Entwicklung und Produktion-Umgebungen. Unsere intranet-Entwicklung-Datenbanken, zum Beispiel, alle haben den gleichen Satz von einfachen Anmeldeinformationen während unserer Produktion Datenbanken haben jeweils unterschiedliche Anmeldeinformationen mit komplexen Passwörtern. Es gibt also sehr gute Gründe, die für nicht setzen Sie Ihre connection strings in der Web/App.config-Datei, sondern in eine Datei lokal auf dem Ziel-server. Ich, wie die Registrierung selbst, aber ich weiß, dass das überhaupt nicht unterstützt. Klar, die Maschine.config-Datei gibt es eine Lösung zu bieten.
Nein, ich Stimme mit OJ, weil die Maschine.config befindet sich in der .Net framework und geändert werden kann von Microsoft. Aber Microsoft weiß nichts von der
connectionStrings.config
- Datei auf unserer Produktions-Server. Diese Datei wird geladen, durch die Web/App.config-Dateien mit:<connectionStrings configSource="path\to\connectionStrings.config"/>
blowdart machte den Punkt über die Verschlüsselung-immer eine gute Idee. Aber am Ende, der einzige Weg, um vollständig schützen Sie Ihre Datenbank-Anmeldeinformationen ändern Sie diese regelmäßig.
Sicherheit Weise kann man sich in die Speicherung Ihrer Verbindungszeichenfolgen in der eigenen verschlüsselt .config-Datei, die Ihre web.config-Datei ein Verweis auf.
alle guten Punkte. In meinem Umfeld, Datenbanken geteilt werden, so dass die Speicherung in einer web.config Kräfte Redundanz. Wir verwenden standard-SQL-Datenbanken hier, dass jeder zugreift. Eine separate config-Datei wird bevorzugt. Dies ermöglicht für die Standardisierung, Sicherheit und die Beseitigung der Notwendigkeit, ändern Sie die web.config, wenn eine Anwendung bereitgestellt wird.