Frage

In meiner WinForms-Anwendung i in lokaler Ebene die Verbindungszeichenfolge am Hashing.

Aber hier ein paar Fragen.

Nach meiner App der Verbindungszeichenfolge dechiffriert werden die Verbindungszeichenfolge Informationen in Klartext gesendet? Und da meine Anwendung lokal installiert ist der Mann in der Mitte könnte jeder Benutzer sein?

Wie kann ich die Verbindungszeichenfolge zu schützen, Becides die „Kraft-Verschlüsselung“ -Option, die ein zusätzliches Zertifikat erfordert?

War es hilfreich?

Lösung

Sie haben nur eine begrenzte Menge von Ansätzen hier bezüglich der Verbindungszeichenfolge und sicher zu halten.

Eine Option, wenn die Verbindungszeichenfolge innerhalb einer web.config oder app.config-Datei gespeichert ist (für Web- und Windows-Anwendungen, respectively) können Sie den Wert verschlüsseln. Ist hier ein paar Links, die detailliert, wie das getan werden kann:

Encrypting Web.Config Werte in ASP.NET 2.0

Verschlüsseln von Verbindungszeichenfolgen in VS 2005 .config Dateien

Natürlich, wie Sie ganz richtig sagen, dies kann die Sicherheit nicht erreichen, die Sie sich wünschen, da die Anwendung auch auf den Computer des Benutzers ausgeführt werden kann und so die app.config-Datei (auch in einem verschlüsselten Zustand) und die damit verbundene Verschlüsselungs- / Entschlüsselungs-Schlüssel wird auch auf dem Computer des Benutzers zur Verfügung. Ein kenntnisreicher und Unternehmer Benutzer könnte dann Zugriff auf Ihre „Klartext“ Verbindungszeichenfolge gewinnen.

IMHO, ist eine der besten Möglichkeiten, um Ihre Benutzer zu verhindern, dass die Datenbank-Verbindungszeichenfolge zu sehen, ist es nie an erster Stelle, verschlüsselt oder nicht zu ihnen geben. Dies würde erfordern, dass Ihre Windows-Forms-Anwendung spricht nicht direkt in eine Datenbank (eine Verbindungszeichenfolge), sondern würde direkt (zB) einen Web-Service sprechen.

Natürlich würden Sie der Windows-Formular-Anwendung eine URL geben, mit dem sie den Web-Service zugreifen können, aber dann die Nutzung dieses Web-Service eingeschränkt und kontrolliert würde nur um den Zugang mit einer benutzerspezifischen Benutzername / Passwort-Kombination.

Auf diese Weise können Sie die Web-Service-Host (muss nicht ein . NET Remoting oder WCF ) auf eine physisch getrennten Server / Maschine, die Sie stark <> tun hat die vollständige Kontrolle über und schützen diese Maschine mit Perimetersicherheit .

Es würde die Anwendungen und Dienste, die Sie auf dieser sicheren Maschine laufen haben, die an die Verbindungszeichenfolge der Zugriff auf die Datenbank haben, und diese Verbindungszeichenfolge muss nie außerhalb des Umfangs dieser Maschine weitergegeben werden, damit halten sie vollkommen sicher (unter der Annahme, die oben genannte Perimeter-Sicherheit ist vorhanden und wirksam ist).

Natürlich große architektonische Änderungen an Ihre Anwendung mit ziemlicher Sicherheit bedeuten würde, alles diese Umsetzung, die in Abhängigkeit von der Größe und die Art der Anwendung, kann oder kann nicht sinnvoll sein, aber der einzige Weg, wirklich Ihre Verbindung sichern Zeichenfolge von einem Benutzer (oder eine Maschine des Benutzers) ist, um sicherzustellen, dass es nie zur Verfügung (in verschlüsselter oder entschlüsselter Form) an dem Benutzer (oder Benutzer-Maschine).

Sobald Sie die Verbindungszeichenfolge setzen auf den Computer des Benutzers, auch in einem verschlüsselten Zustand, müssen Sie diese Fähigkeit, der gleiche Maschine geben, dass die verschlüsselte Verbindung Zeichenfolge zu entschlüsseln, und es ist das schwache Glied in der Kette und der Punkt bei der (zu einem einfall Benutzer) Ihre Klartext-Verbindungszeichenfolge bestimmt werden. Sie könnten off-laden die Entschlüsselung der verschlüsselten Verbindungszeichenfolge zu einem anderen (sicheren) Maschine, aber das ist nur eine Variation des zuvor erwähnten Client-Server-Mechanismus, bei dem der Teil, der sicher gehalten wird (Entschlüsselungsschlüssel, Verbindungszeichenfolge etc.) durchgeführt wird, auf einer anderen Maschine unter Ihrem eigenen sicheren Kontrolle.

Andere Tipps

Sie können nicht die Verbindungszeichenfolge schützen. Was können Sie tun, ist über SSL sicheren Kanal angeschlossen werden.

Diese Seite in der MSDN beschreibt, wie SSL für die Verbindung implementieren:

http://support.microsoft.com/kb/316898

Und diese beschreibt SQL-Authentifizierung (für ASP.NET):

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

Es scheint, dass Sie nur wirklich brauchen, den Benutzernamen und das Passwort zu verschlüsseln? In diesem Fall sollte der Windows-Authentifizierung eine Option sein (obwohl ich oft Probleme haben, es immer für mich zu arbeiten)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top