Sichere Verbindung zu einer Datenbank herstellen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von simpelSoft.

    Sichere Verbindung zu einer Datenbank herstellen

    Hallo alle zusammen,

    ich habe eine grundsätzliche Frage. Und zwar habe ich mich gefragt, wie ich richtig eine sichere Verbindung zu einer externen Datenbank herstelle.
    Wenn möglich möchte ich es vermeiden Passwörter im Quellcode fest zu hinterlegen (habe genug Gründe hier im Forum gelesen, die dagegen sprechen).

    Ich hatte schon überlegt mittels PHP Daten aus einer Datenbank zu lesen und zu schreiben (Stichwort $_GET).

    PHP-Quellcode

    1. $_GET


    Des Weiteren hatte ich überlegt die Verbindung nur während der Laufzeit herzustellen, damit keine Passwörter gespeichert werden.
    Müsste man dann mit einem Passwort-Hash arbeiten um das Passwort nicht immer wieder erneut eingeben zu müssen?


    Ich hoffe, meine Frage ist nicht zu verwirrend und ergibt Sinn. :)
    Über ein paar Tipps und Stichpunkte zum Einlesen würde ich mich freuen.

    Vielen Dank für die kommenden Antworten schon mal!

    Adrian
    Hallo @a.b_om,

    wie ich mit PHP Daten aus einer Datenbank lese, ist mir bewusst. Ich suche nach der sichersten Möglichkeit, mit Visual Basic, eine Verbindung zu einer Datenbank herzustellen.

    Ist PHP der beste Weg? Wenn ja, warum? Gibt es Alternativen?


    Gruß

    Adrian
    Der sicherste Weg ist, nicht mit der Datenbank sondern über eine Web-API oder REST-API zu kommunizieren, die dann auf die Datenbank zugreift. Setzt aber ein Umdenken in der Entwicklung voraus. Vorteil ist, dass keine Queries an die SQL-Datenbank übergeben werden sondern nur strukturierte Daten (optimalerweise in .json oder .xml) übergeben werden die dann von der API gelesen und an den SQL in Form einer Query weitergereicht werden.

    Ein weiterer Vorteil ist, dass du dir keine Gedanken über das sichere Ablegen der SQL-Credentials machen musst (nur über die User-Credentials für den Zugriff auf die API)

    Ist erheblicher Mehraufwand, aber was die Sicherheit angeht, die optimale Lösung. Setzt aber zwangläufig ein paar Kenntnisse über Webapplikationen, API-Programmierung und bestenfalls auch Cloud-Architektur voraus um deine Datenbank nach außen freizugeben.


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Yanbel“ ()

    still_adrian schrieb:

    Gibt es Alternativen?

    Guten Morgen Adrian,

    es gibt eine gute Alternative, einen SSH-Tunnel zur Datenbank.
    Dafür gibt es ein hervorragendes Projekt auf Git, dies steht Dir auch als NuGet Paket zur direkten Verwendung im Studio zur Verfügung.
    Bitte hier mal schauen, besser kann ich es auch nicht erklären, als auf dieser Seite: hofmann-robert.info/computer/2…-connection-over-ssh.html
    Guten Morgen,

    danke @Yanbel und @simpelSoft für die guten Antworten.

    @Yanbel hättest du eventuell noch eine gute Quelle über Web-API's oder REST-API's?
    Die Quellen, die ich bisher gefunden habe, sind sehr oberflächlich.

    @simpelSoft in dem Beispiel, aus deinem Link sieht es so aus, als wenn die Daten für die SSH-Verbindung auch im Quellcode hinterlegt werden.
    Sehe ich das falsch? Sicherlich geht GitHub da noch drauf ein. Mich hat das Beispiel von hier nur verwirrt.

    Ich werde mich dann erstmal so gut es geht in die Themen einlesen und wenn ich weitere Fragen habe, melde ich mich erneut hier im Forum.


    Danke für eure Mühe

    Adrian

    still_adrian schrieb:


    @simpelSoft
    in dem Beispiel, aus deinem Link sieht es so aus, als wenn die Daten
    für die SSH-Verbindung auch im Quellcode hinterlegt werden.
    Sehe ich das falsch? Sicherlich geht GitHub da noch drauf ein. Mich hat das Beispiel von hier nur verwirrt.

    Wenn Du einen SSH-Tunnel aufbaust, ist es natürlich notwendig, dich zu authentifizieren.
    Es kommt wie immer darauf an, was du genau vor hast.
    Ist das Programm für die eigene Benutzung oder sollen Andere damit arbeiten?
    Wie du die Credentials übergibst, ist egal, der Tunnel steht, bis du ihn beendest.
    Das heißt, zur Laufzeit deines Programmes kann nach einmaligem Aufbau des Tunnels beliebig oft und sicher auf die Datenbank zugegriffen werden.
    Die Credentials müssen natürlich nicht fest im Programm stehen, zwei Textboxen gehen auch - 1x einloggen, Tunnel steht und los gehts bis zum Programmende.