Sicherer aufbau zu mysql datenbank

  • C#

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von enter9991.

    Sicherer aufbau zu mysql datenbank

    Hallo.

    Ich wollte mal fragen wie es möglich ist eine Sichere datenbank verbindung in c# zu programmieren.

    ich habe gelesen das es unsicher ist seine mysql daten im script zu speichern.

    da mich das jetzt verunsichert möchte ich lieber einmal nach fragen.

    PS: die datenbank liegt im internet auf eine server und ist so konfiguriert das von außen zugegriffen werden darf.

    *Topic verschoben*
    Clan Launcher: 99%

    Übungs & Prüfungstool: 1%

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Du kannst es mit php lösen. Da kann niemand die login Daten sehen. Ich kann dir gleich mal ein Beispiel für php geben, wie du es für dich verwenden kannst.

    Das mit dem "unsicher" stimmt insofern, dass man mit Tools wie JustDecompile das ganze dekompilieren kannst und das Passwort im klartext sehen kannst.
    Die beste maschinelle Übersetzung der Welt - DeepL Übersetzer
    Alle Zitate, die ich seit dem 1.9.2017 übersetzt habe, wurden vollautomatisch mit DeepL übersetzt.



    Sauberste Variante wäre es wohl einen Webservice zu schreiben, der Authentifizierungsdaten entgegennimmt. Da das für den Anfang zweifellos zu schwer ist kann man die php Lösung durchaus verwenden. Dennoch gilt: Bau irgendeine Form von Authentifizierung in die PHP Datei mit rein und speicher keine Passwörter ungehashed in deiner DB. Außerdem wäre es im Falle von php sinnvoll PDO zu verwenden, sonst kann jeder mit 1 wenig SQL Grundlagen deine DB zerlegen ^^

    Referenzlinks:
    de2.php.net/manual/de/book.array.php
    http://de2.php.net/manual/de/book.pdo.php

    Pseuddoquellcode für die gebastelte PHP Datenbank API:

    Quellcode

    1. ​1. GET-Parameter für Nutzer und gehashtes Password entgegennehmen.
    2. 2. Nutzer Passwordkombination prüfen.
    3. 3. Falls Nutzer authorisiert, dann hole GET-Parameter für die Anfrage
    4. 4. Bau eine PDO-Verbindung zur Datenbank auf
    5. 5. Bastel den Parameter von 4. in ein prepared statement und führe es aus.
    6. 6. Gib das Resultat der Anfrage als Array im Klartext aus


    Deine Anwendung könnte dann einfach HTTP-Anfragen an z.B. mysite.de/datenbankenAPI.php?user=user123&password=<ein Hash>&automarke=audi senden und bekommt die Ergebnisse ganz ohne dass du SQL Logindaten in der Anwendung verstecken musst.

    8-) faxe1008 8-)

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

    Wie soll php verhindern, dass -wenn die Kommunikation LogIn-Daten enthält - diese ersnifft werden können?

    Das einzige was php verhindern kann ist, dass frei formuliertes Sql auf der Db ausgeführt werden kann.

    Das lässt sich aber glaub einfacher über StoredProcedures erledigen, in Kombination mit restriktiven Berechtigungen.

    Imo sicher ist Kommunikation nur, wenn nach Stand der Technik verschlüsselt wird (TLS etc)
    Hallo und erst mal Danke für eure Antworten.

    Könntet ihr mir villeicht irgendwelche links zukommen lassen. Ich würde gerne wissen was genau ich dort machen muss. Deutsche Seiten würde ich bevorzugen.

    Unsere Community hat zurzeit fast 2.000 mitglieder und da ist die sicherheit für die datenbank sehr sehr wichtig.

    Wenn mir jemand zurseite stehen könnte und auch noch mal dann über denn Code schauen könnte.

    Das wäre Super nett.
    Clan Launcher: 99%

    Übungs & Prüfungstool: 1%

    Ich kann dir gerne helfen, bin aber momentan etwas beschäftigt. Ich habe praktisch ein fertiges Skript in php mit PDO, das kannst du dann entsprechend anpassen. Das Skript sollte auf einem Webserver mit ssl-Zertifikat liegen, damit die Kommunikation verschlüsselt ist. Ich habe einen Beitrag, wo ich PDO relativ einfach erklärt habe. Ich linke diesen gleich mal hier hin : [Tipp] Sql-Injections verhindern

    Ich hoffe es ist einigermaßen verständlich erklärt. Ansonsten frag mich einfach, ich versuche dann schnellstmöglich zu antworten.
    Die beste maschinelle Übersetzung der Welt - DeepL Übersetzer
    Alle Zitate, die ich seit dem 1.9.2017 übersetzt habe, wurden vollautomatisch mit DeepL übersetzt.



    ErfinderDesRades schrieb:

    Wie soll php verhindern, dass -wenn die Kommunikation LogIn-Daten enthält - diese ersnifft werden können?

    Frage ich mich auch.

    ​Was mich interessieren würde: Gibt es eigentlich eine Möglichkeit mit eine DB direkt zu kommunizieren so das die Daten vielleicht peer to peer Verschlüsselt werden.
    ​Ich kann ja z.b. mit WireShark direkt sehen und glaube ich auch bearbeiten welche Daten kommen und gehen. Geht sowas? Habe ich mich schon öfters gefragt.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Nofear23m

    Hat der @ErfinderDesRades ja schon geschrieben.

    Die Verbindung zur Datenbank mit Transportverschlüsselung SSL
    mySQL klick
    MS SQL klick

    und dann egal ob mySQL oder MS SQL Prepared Statements bzw. Stored Procedures

    Nachtrag:

    Zum Thema WebAPI vs. direkter DB Zugriff
    • Bei einer WebAPI muss ich dem Benutzer keine direkten Berechtigungen auf der DB erteilen.
    • Ich gebe mein DBMS nicht nach außen
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    @MrTrebron
    Danke, lese ich mir gleich durch. :thumbsup:
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ich habe die vier Beiträge zum Thema Crosspostings (Thread existiert in Fremdforum) gelöscht, weil Streitereien bringen keinem was.

    Grundsätzlich habe ich kein Problem damit, weswegen das auch in unseren Boardregeln nicht vermerkt ist (da geht es ledilich um Crosspostings innerhalb von VBP). Voraussetzung ist natürlich, dass Lösungen und Lösungsansätze in beiden Foren vom TE gepostet werden und das Posting nicht derart C&P ist, dass das halbe Fremdforum hier mitgepostet wurde.

    Und jetzt bitte weiter im Thema, im Fremdforum wurde der Thread immerhin geschlossen.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Mir ist da gerade noch eine Idee gekommen wie sieht es aus mit einer
    Client Application ---> Server Application --> MySQL
    MySQL --> Server Application --> Client Application
    wäre das sicher ?
    Clan Launcher: 99%

    Übungs & Prüfungstool: 1%

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

    vlt. nutzt dir Mini-Tipp: WCF - Chat (Windows Communication Foundation) ein bischen.
    Das ist immerhin eine wcf-WebService-Anwendung zum Downloaden - nur so gut wie nicht erklärt.
    Vom Prinzip her was du brauchst, nur muss deiner natürlich eine ganz anderen Contract veröffentlichen, und halt im Hintergrund auf einer DB rum-ölen.
    Und SSL hatter auch nicht, aber prinzipiell kann man SSL an wcf-services drankonfigurieren.
    Ansonsten dich über wcf schlau machen.
    Also ich habe mir jetzt mal gedanken gemacht wie ich das am besten anstelle und wollte einfach mal eure meinung dazu hören.

    Ich erstelle eine Client der beim starten einen Verschüsselten Token Generiert.
    Dieser Token Wird solange das programm gestartet ist in der Registry gespeichert. ( Zb. (Wert=ClientToken)
    Sollte der benutzer jetzt eine anfrage an denn server senden ( zum beispiel zeig mir alle regestrierten benutzer ) wird ein verschlüsselter anfragetoken erstellt. (AnfrageToken)
    Jetzt erhält der server Denn Client und Anfrage Token und entschlüsselt diese. ( Wert=ClientToken+AnfrageToken=ClientundAnfrageToken)
    sollte der server die anfrage entschlüsseln können wird die anfrage zur mysql datenbank gesendet. dann erstellt der Server einen neuen ClientToken+AntwortsToken und sendet diese zurück an denn Clienten. Der Client löscht denn alten Token aus der Registry und speichert denn neuen. dann wird der neue token zum entschlüsseln des Antwort Tokens Verwendet.

    nutzen würde ich hierzu ein Socket-Server

    Client.Form
    Server.Console
    und eine klasse
    Clan Launcher: 99%

    Übungs & Prüfungstool: 1%

    Ich kann dir nicht so ganz folgen.

    Wie soll der Serverdienst etwas entschlüsseln was der Client verschlüsselt hat? Es sei denn es steht im Quellcode des Clients mit welcher Passphrase verschlüsselt wird. Und Zack ist eine Sicherheitslücke da.

    Wenn du unbedingt ohne Login des Users auskommen magst, kannst du beim erstem Start des Clients mit Credentials einem API Token beim Server anfordern. Diesen kannst du speichern und zum Beispiel mit der Hardware koppeln.
    Bei jeder Anfrage wird das API Token genutzt.
    Somit wäre der Token nicht auf andere Hardware übertragbar.

    Serverseitig kannst du das Token bei Bedarf sperren, oder auf abgelaufen setzen, so muss sich der Benutzer ein mal erneut mit seinen Credentials anmelden
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.