Wie sichere/verstecke/verschlüssel ich meinen ConnectionString vor Veröffentlichung vor Dritten oder muss ich das nicht? (für meine erste Webseite inklusive Datenbankanbindung)

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von nogood.

    Wie sichere/verstecke/verschlüssel ich meinen ConnectionString vor Veröffentlichung vor Dritten oder muss ich das nicht? (für meine erste Webseite inklusive Datenbankanbindung)

    Moin Leute,
    (ich hoffe ich bin im richtigen Unterforum)

    ich hab das erste Mal "erfolgreich" eine Webseite gebaut, die eine Datenbankanbindung hat (konkret hab ich folgenden TechStack benutzt: VS -> C# / Blazor / MongoDB-Atlas (OnlineCloudDB)).

    Ich hab erst ein WinForm Projekt realisiert das CRUD Operation auf der DB erfolgreich verrichtet.
    Dann hab ich das Projekt genommen und in Blazor "übersetzt". Getestet hab ich auf meinem lokalen Rechner (die DB natürlich war nicht auf meinem Rechner sondern Online). Ich würde gerne sehen, ob das alles auch als Webseite funktioniert, die wirklich Online im Netz liegt.

    Sprich ich möchte das Blazor Projekt auf meinem Server mit eigener Domain deployen.

    Jetzt zur meiner Wissenlücke: Wie sicher ich den ConnectionString der DB vor dritten? Der ConnectionString zur DB befindet sich in meinem Projekt in einer Klassen-Datei und die Klasse befindet sich ein einer VS Standard net. 4.5 Bibliothek.

    In Visual Studio sieht das in etwa so aus:

    Solution XYZName:
    -Projekt BlazorAPP "die WebSeite" (Abhängigkeit von MongoCRUD hinzugefügt)
    -Projekt MongoCRUD "DB CRUD Methoden" als (Bibliothek)

    Im ConnectionString kann ich an einer Stelle die ersten 5 Zeichen meines Passwortes in klar Form sehen.

    Ich bin auf dem Gebiet blutiger Anfänger wie veröffentliche ich meine WebProjekte ohne das ich gleich meinen ConnectionString jedem unter die Nase reibe?
    (Zeile 17 steht der von mir für dieses Posting gekürzte ConnectionString; im "echten" Projekt würde ich denn dann vollständig dort stehen lassen)

    Spoiler anzeigen

    C#-Quellcode

    1. ​using MongoDB.Bson;
    2. using MongoDB.Driver;
    3. using System;
    4. using System.Collections.Generic;
    5. using System.Text;
    6. namespace MongoBlazorAux
    7. {
    8. public class MongoCRUD
    9. {
    10. private IMongoDatabase db;
    11. public MongoCRUD(string databaseName)
    12. {
    13. //Insert des ConnectionString der DB hier-> var client = new MongoClient("YourConnectionStringHere");
    14. var client = new MongoClient("....mongodb.net/test?retryWrites=true&w=majority");
    15. db = client.GetDatabase(databaseName);
    16. }
    17. //CREATE Methode
    18. public void CreateDocument<T>(string collection, T document)
    19. {
    20. var _collection = db.GetCollection<T>(collection);
    21. _collection.InsertOne(document);
    22. }
    23. //READ ALL Method
    24. public List<T> ReadAllDocuments<T>(string collection)
    25. {
    26. var _collection = db.GetCollection<T>(collection);
    27. return _collection.Find(new BsonDocument()).ToList();
    28. }
    29. //... und dann folgen dir restlichen Methoden von CRUD etc.
    30. }
    31. }


    Meine Fragen:
    1. Kann das alles so bleiben, hochgeladen werden und ist sicher? j/n
    2. Ist meine Vorstellung richtig, dass der ConnectionString mit einer verschlüsselten Datei verbunden ist die dann als PWD Login an die DB gesendet wird?
    3. Falls das alles Mist ist wie gehe ich besser vor?
    4. Links im Internet wo das Thema ConnectionString + Sicherheit gut erklärt wird?#

    Tausend Dank an Euch :)
    codewars.com Rank: 4 kyu
    Korrigiere mich, wenn ich falsch liege, aber auch eine Blazor-App besteht, da es sich ja um ein ASP.NET Projekt handelt, am Ende aus 2 Teilen. Das Frontend, das dem User angezeigt wird und dem Backend, das komplett auf dem Server läuft, und der User niemals zu sehen bekommt.

    Es wäre also kein Problem im Backend den Connectionstring im Klartext zu haben, bekommt ja eh niemand mit.
    Hi,

    nö ist schon alles korrekt es sind zwei Teile, Frontend und Backend ... Bin halt nur verunsichert, da ich mich mit diesen Sachen bislang so gar nicht auseinandergesetzt habe. Aus Postings für Projekte aus dem Desktopbereich, hab ich immer mal wieder gelesen, dass Passwörter etc. nichts im Quellcode zu suchen hätten. Daher die Frage ob das so i.O. ist den ConnectionString so zuspeichern?
    codewars.com Rank: 4 kyu