myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » Wie ein Passwort im Code in Klartext für Remote Repository verschlüsseln?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie ein Passwort im Code in Klartext für Remote Repository verschlüsseln?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
piro299
myCSharp.de-Mitglied

Dabei seit: 27.01.2016
Beiträge: 22
Entwicklungsumgebung: Visual Studio 2019
Herkunft: Norddeutschland


piro299 ist offline

Wie ein Passwort im Code in Klartext für Remote Repository verschlüsseln?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Moin zusammen,

ich habe über die Jahre viele C# Consolen bzw. GUI Anwendungen (Winforms) geschrieben, die mit einem MS SQL Datenbank Server kommunizieren.

Für diese Anwendungen habe ich den Benutzer und das Passwort im Code direkt hinterlegt.

Das war bis jetzt kein Problem. Der Programmcode liegt ja nur auf meinem Laptop und nur ich programmiere die Anwendungen.

Nun möchte ich aber meinen Sourcecode in einem Online Repository ablegen. Wir verwenden von MS Azure DevOps.

Nur jetzt habe ich das Problem, dass dann die Passwörter in Klartext im Online Repository zu sehen sind.

Eine Möglichkeit wäre auch, dass ich ein kleines Programm schreibe, welches mir das Passwort verschlüsselt.
Dann könnte ich es verschlüsselt im Code ablegen und eine Methode im Code entschlüsselt es wieder.
Klar kann man die Methode sehen und mit einem eigenen Programm und der Methode es wieder entschlüsseln.
Da mein Ziel ist, dass Passwort nicht im Klartext im Code zu haben, könnte es ausreichen. Hätte es aber noch gerne sicherer.

Ich habe hier im Forum schon ein wenig gesucht. Bin aber leider nicht wirklich fündig geworden zu meinem Fall.

Darf ich fragen, was die sinnvollsten und aktuellen Möglichkeiten sind?

Vielen Danke im Voraus
Sven
Neuer Beitrag 02.02.2020 21:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.943
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von piro299:
Für diese Anwendungen habe ich den Benutzer und das Passwort im Code direkt hinterlegt.

Absolutes No Go.

- Das ist unsicher
- Das ist nicht wartbar

Passwörter haben niemals was im Quellcode zu suchen ( Never store credentials as code/config in Azure Repos).
Der Wunsch danach zeigt i.d.R. eine Sicherheitslücke im Development Flow.
 Modere Quellcode-Systeme verweigern einen Commit bei einer entsprechenden Erkennung.
Es gab genug Leaks durch Credentials in Git und Co. Genug Gruppen haben sich auf den Plattformen umgebaut.

Bei Webanwendungen sind Passwörter immer Teil des Environments, also zB. der Test oder der Produktivumgebung.
Und dort sollten diese auch gepflegt werden; niemals im Code.

Bei Desktop-Anwendungen sollte das Passwort niemals innerhalb der Anwendung gespeichert werden, sondern in den dafür vorgesehen Orten.
Im Falle von .NET gibts dazu seit ca. 15 Jahren die entsprechenden Application bzw. User Settings.
Wenn ich Dich richtig verstehe, dann willst Du wohl eher User Settings (Benutzercredentials für die Datenbankverbindung).

Zitat:
Ich habe hier im Forum schon ein wenig gesucht. Bin aber leider nicht wirklich fündig geworden zu meinem Fall.

 [Tutorial] Konfigurationsmodell im .NET Framework alternativ auch der Windows Credential Manager. (über die Win32 API ansprechbar; alternativ gibts dazu auch nen Projekt  https://www.nuget.org/packages/CredentialManagement/)

Wenn sich jedoch alle Benutzer die gleichen SQL Credentials teilen, die also der Benutzer selbst nicht kennen darf, dann ist das ganze Konzept hinfällig - und unsicher.

Sicher kannst Du sowas über zwei arten Lösen:
- Benutzerverwaltung in der Datenbank (zB Active Directory)
- Eigene Benutzerverwaltung ohne direkten Datenbankzugriff (mit Service davor)
Neuer Beitrag 02.02.2020 21:25 Beiträge des Benutzers | zu Buddylist hinzufügen
piro299
myCSharp.de-Mitglied

Dabei seit: 27.01.2016
Beiträge: 22
Entwicklungsumgebung: Visual Studio 2019
Herkunft: Norddeutschland

Themenstarter Thema begonnen von piro299

piro299 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für die klaren Worte.

Dann werde ich mal die Credentials aus dem Code holen.

Der Sinn, dass alle Anwender sich einen SQL User teilen, liegt daran, dass ich nicht weiß wer die Anwendung ausführt.

Die Anwendung ermittelt Computerdaten des Benutzers beim Windows Login und speichert diese dann in der Datenbank.

Ich werde mir mal das Konzept anschauen, die Credentials in der app.config oder user.config zu speichern.

Ich möchte das Sicherheitsrisiko vermeiden.

Danke für weiter Meinungen oder Vorschläge.
Sven
Neuer Beitrag 02.02.2020 23:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.943
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von piro299:
Der Sinn, dass alle Anwender sich einen SQL User teilen, liegt daran, dass ich nicht weiß wer die Anwendung ausführt.

Sicherheitstechnisch ist das mehr als bedenklich. Je nachdem was für Daten Du speicherst ist so ein vorgehen implizit auch durch Gesetze verboten.
Das ist eine große Sicherheitslücke.

Zitat von piro299:
Die Anwendung ermittelt Computerdaten des Benutzers beim Windows Login und speichert diese dann in der Datenbank.

Rechtlich gesehen ist das ein Datenschutzthema. Nur als Hinweis. Das kann genau so ein Fall sein, wo Du eigentlich Vorgaben durch das Gesetz (hier zB DSGVO) beachten musst.

Technisch gesehen kann offenbar jeder User, weil man sich ja einen Login teilt, die Daten der Kollegen sehen.
Prinzipiell könnte das durchaus eine Gesetzesverletzung darstellen, wofür ein MA das Unternehmen belangen kann, sofern sich aus den Daten zB Benutzerverhalten extrahieren lassen etc.

Tipp: machs richtig, nicht wie aktuell :-)
Neuer Beitrag 02.02.2020 23:14 Beiträge des Benutzers | zu Buddylist hinzufügen
piro299
myCSharp.de-Mitglied

Dabei seit: 27.01.2016
Beiträge: 22
Entwicklungsumgebung: Visual Studio 2019
Herkunft: Norddeutschland

Themenstarter Thema begonnen von piro299

piro299 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für den Hinweis. Aber das Thema des Datenschutzes ist geklärt. Habe jetzt nicht alles erzählt, sonst wäre ein ganz langer Thread geworden ;-)

Nochmals danke für deine Hilfe. Du hast mich zum Nachdenken gebracht und ich werde meine Anwendung umbauen.

Vielen Dank nochmal, auch für deine schnelle Antworten.
Neuer Beitrag 02.02.2020 23:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.943
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Falls Du trotzdem nen technologischen Tipp haben willst, da es ja offenbar eine Unternehmensanwendung ist:

- Kommunizier nicht mit der Datenbank direkt
- Kommunizier zB. via gRPC, MQTT oder HTTP zB gegen einen ASP.NET Core Endpunkt
- Für die Authentifizierung kannst Du einfach Active Directory verwenden
- Die Settings kannst Du durch Policies an die Registry der PCs verteilen

Damit hast Du alle Anforderungen erschlagen:
- Settings durch Registry und zentrale Verwaltung
- Credentials brauchst nicht weil Security by Design durch Active Directory
Neuer Beitrag 02.02.2020 23:36 Beiträge des Benutzers | zu Buddylist hinzufügen
piro299
myCSharp.de-Mitglied

Dabei seit: 27.01.2016
Beiträge: 22
Entwicklungsumgebung: Visual Studio 2019
Herkunft: Norddeutschland

Themenstarter Thema begonnen von piro299

piro299 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

danke dir.
Neuer Beitrag 02.02.2020 23:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 5 Monate.
Der letzte Beitrag ist älter als 5 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 06.07.2020 19:21