Eine Verbindung zur einer MySQL Datenbank sicher herstellen?



  • Wenn du relativ zügig eine GUI erstellen möchtest, kannst du dir auch mal Nana anschauen (s.a. Screenshots) - es nutzt modernes C++.



  • @Th69 Danke für den Tipp, das werde ich auf jeden fall gleich mal machen.

    PS. Wie nutze ich Nana?



  • @Lucius sagte in Eine Verbindung zur einer MySQL Datenbank sicher herstellen?:

    @Th69 Danke für den Tipp, das werde ich auf jeden fall gleich mal machen.

    PS. Wie nutze ich Nana?

    Wie andere zuvor schon geschrieben haben. Du musst die Doku lesen!



  • @Lucius sagte in Eine Verbindung zur einer MySQL Datenbank sicher herstellen?:

    Es spricht nichts dagegen, allerdings nur Gezwungen zu sein, Open Source zu Programmieren, damit ich ein Framework nutzen darf, finde ich halt doof.

    Kannst du doof finden. Ich finde es gut, dass OS Projekte nicht zahlen müssen. Aber gut es gibt noch andere Libs.

    Inwiefern ein Vorteil wegen den Standard APIs?

    Es wird im Standard (meiner Meinung nach) gerne mal over engineered. Im Moment darf ich mich zum Bleistift wieder mit vector<bool> rumschlagen. Wer zur Hölle braucht das und warum muss das in den Standard.



  • Du kannst Qt auch kommerziell nutzen ohne deinen Code zu veröffentlichen und ohne dafür zu bezahlen.



  • Danke an euch beiden.



  • @Lucius hier, les mal meinen ersten Beitrag. Da steht alles: https://www.c-plusplus.net/forum/topic/350970/qt-kommerziell-nutzen
    Hinzu kommt glaube noch, dass du Qt inklusive Copyright irgendwo nennen musst. Vielleicht in einem "About" Fenster oder so



  • @Zhavok Ja das habe ich auch überall gelesen. Das Problem für mich ist die Abhängigkeit, QT nutzt ja auch die WinAPI wenn ich mich nicht täusche? Dann frage ich mich doch, ob das nicht besser wäre die WinAPI richtig zu verstehen, damit man selbst seine Form ohne QT aufbauen kann.

    Am Anfang ist das natürlich Arbeit, aber wenn man einmal eine Form richtig angepasst hat und diese als Vorlage nimmt, spart man auch sehr viel Zeit, zwar nicht so viel wie in QT, aber man hat die Abhängigkeit / Lizenzen nicht mehr.

    Klar unter Linux oder Mac müsste man das ganze auch machen, aber ich selbst werde erstmal nur in Windows proggen.



  • Willst du erst viel lernen (und ausprobieren) müssen oder möchtest du in kurzer Zeit eine Applikation entwickeln?



  • Qt ist Multiplatform, hat ne super Doku, allerhand Features für allemöglichen Probleme und ich persönlich finde das Design der Lib ganz gut. Du kannst sogar damit mobile Anwendungen basteln. Auf die WinAPI zu setzen kann ich dir absolut nicht empfehlen. Du kannst dadurch effektiv nichts besser als wenn du ne Lib verwendest. Klar, du machst dich damit abhängig von der Qt, aber wenn du irgendwann deine Software auf Linux oder MacOS veröffentlichten willst kannst du auch direkt von vorn anfangen. Und wenn du Qt nicht magst dann nimm was anderes. ImGui soll auch ganz gut sein.



  • @Th69 Naja, viel lernen muss ich sowieso. Ich finde wenn man eine Sache lernt, dann sollte man Sie schon richtig lernen. Ich war noch nie ein Freund von Frameworks. In PHP hat man ja auch sehr viele Möglichkeiten und ja, man muss das Rad nicht neu erfinden, allerdings sollte man wissen, wie das Rad gebaut wurde.

    Die Vergangenheit hat auch gezeigt, das einige Frameworks bereits gestorben sind. Ich bin ja auch nicht unter Zeitdruck. Achja und ich baue die WinAPI Form bis hin zu den Steuerelemente in Ca. 1 Stunde auf. Klar muss da noch das Design angepasst werden und das hält zwar auf, aber mit der Zeit wird man immer Schneller. Ist auch kein Hexenwerk ☺

    @Zhavok Na klar, hast ja nicht unrecht. Es kann auch sein das ich ein anderes Framework nutze statt WinAPI, imGUI oder wxwidgets, welches davon besser ist, keine Ahnung. Wenn ich an meinen Grenzen mit der WinAPI komme, dann muss ich mir ja sowieso was anderes überlegen 🙂

    Aber jetzt stehen erstmal die ganzen Tipps hier Vordergrund. Muss die Sowieso in der Console testen.



  • @Lucius sagte in Eine Verbindung zur einer MySQL Datenbank sicher herstellen?:

    Naja, viel lernen muss ich sowieso. Ich finde wenn man eine Sache lernt, dann sollte man Sie schon richtig lernen. Ich war noch nie ein Freund von Frameworks. In PHP hat man ja auch sehr viele Möglichkeiten und ja, man muss das Rad nicht neu erfinden, allerdings sollte man wissen, wie das Rad gebaut wurde.

    Zum üben und lernen kann man einiges machen. Allerdings wird man so selten fertig und nicht in einer konkurrenzfähigen Qualität.

    Am Ende ist auch dabei die Frage, wie weit man das durchexerzieren will. Ist die stl in Ordnung? Ist die WinApi in Ordnung? Auch das sind Bibliotheken.

    Aber am Ende ist es dein Spaß 😉



  • @Lucius
    Wenn du es unbedingt mit C++ machen willst, wieso dann nicht mit WinRT bzw. dem App SDK?
    https://learn.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/intro-to-using-cpp-with-winrt
    https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/

    ps: Direkt von der Client-Anwendung auf den Datenbank-Server zugreifen solltest du trotzdem nicht. Warum hab ich ja schon beschrieben. Auch wenn du es hartnäckig ignorierst.



  • Ist denn das mit dem WinRT auch richtiges C++ und nicht wieder so ein MS ding?
    Ich glaube ich weiß was das ist. Ist das nicht die GUI die man nur in Verbindung des MS Stores nutzen kann, also keine exe datei?



  • @Lucius sagte in Eine Verbindung zur einer MySQL Datenbank sicher herstellen?:

    Ist denn das mit dem WinRT auch richtiges C++ und nicht wieder so ein MS ding?

    Das ist richtiges C++. Natürlich ist es auch ein MS Ding. Das ganze SDK kommt ja von MS.

    Ich glaube ich weiß was das ist. Ist das nicht die GUI die man nur in Verbindung des MS Stores nutzen kann, also keine exe datei?

    Mit WinRT/WinUI 2 bist du zwar auf UWP eingeschränkt, aber die App kann man auch ohne MS Store ausliefern/installieren. Mit den nötigen Einträgen im Manifest + Hakerl vom User in den Windows-Settings kann die App dann auch aus ihrer Sandbox "ausbrechen", also z.B. auf beliebige Files zugreifen.

    Mit App SDK/WinUI 3 kannst du ne ganz normale C++ Desktop-Anwendung machen. Läuft halt nur ab Windows 10 Version so-und-so.



  • Ja das ist auch eine Möglichkeit. Ich bin derzeit aber an Boost Lib dran, verstehe es zwar noch nicht wirklich aber gebe mir mühe das zu verstehen.



  • UPDATE Boost:
    Eine TCP Verbindung (also ein HTTP-Package) konnte ich jetzt aufbauen bzw. Senden, die frage ist nur, wie kann ich mir das bezüglich PHP bzw. Datenbank zu nutze machen? Wie frage ich darüber zum Beispiel in der DB einen User ab?

    Ich verstehe eins noch nicht, ich bekomme ein Moved Permanently? Warum passiert das?

    std::stringstream getRequest;
    		getRequest << "GET / HTTP/1.1\r\n";
    		getRequest << "Host: stackoverflow.com\r\n";
    		getRequest << "Connection: keep-alive\r\n";
    		getRequest << "user-agent: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 107.0.0.0 Safari / 537.36";
    		getRequest << "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n";
    		getRequest << "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4\r\n";
    		getRequest << "\r\n";
    		boost::asio::write(tcpSocket, boost::asio::buffer(getRequest.str()));
    		tcpSocket.async_read_some(boost::asio::buffer(data), readHandler);
    

  • Mod

    Du musst das halt programmieren, das war dir klar, oder? Also auf deinem Server einen Endpoint, der irgendwas gegenüber der Datenbank macht, und das Ergebnis zurück gibt. Den Endpoint fordert dein Client dann an und wartet (und erhält hoffentlich) diese Antwort. So etwas kann üblicherweise auch Parameter haben, die auf diverse Art und Weise in der URL codiert sein können.

    So wie es auf dem Server www.c-plusplus.net einen Endpoint /forum/topic gibt, der dann noch zusätzliche Parameter wie '353675', 'eine-verbindung-zur-einer-mysql-datenbank-sicher-herstellen', und '53' nimmt. Der dann, wenn ein Request auf https://www.c-plusplus.net/forum/topic/353675/eine-verbindung-zur-einer-mysql-datenbank-sicher-herstellen/53 kommt, aus einer Datenbank den Thread 353675 (eine-verbindung-zur-einer-mysql-datenbank-sicher-herstellen) abruft, eine Webseite erstellt, die zum 53 Beitrag springt, und das dann zurück liefert. Dabei können dann auch Zugangsberechtigungen für den eingeloggten Nutzer geprüft werden, ob der das überhaupt angucken darf, denn der ganze Zweck der Übung war ja schließlich, dass eben nicht jeder Hansel effektiven Vollzugriff auf alle Daten erhalten soll.

    Da hast du die volle Freiheit, zu programmieren was auch immer du möchtest, und zurück zu geben was auch immer du willst, braucht nicht einmal eine Webseite zu sein. Ich spreche zwar kein PHP, aber ich nehme mal an als eine auf diese Funktionalität spezialisierte Sprache kann es nicht all zu schwer darin sein, Endpunkte zu definieren, die irgendwelche Parameter haben können, die dann irgendwas machen (meistens halt gegen eine Datenbank), und dann zurück zu geben was man will.

    PS: Ich weiß nicht genau, wie c-plusplus.net intern programmiert ist, und ob der Endpoint wirklich an der genannten Stelle sitzt, und wie der genau arbeitet. Aber so könnte es funktionieren.



  • Nabend, ja natürlich ist mir das klar. Allerdings bin ich eher jemand der an Hand von Beispielen Lernt.
    Ich habe wie oben beschrieben, schon eine GET anfrage gestellt. Bei mir ist es komischerweise so, das Moved Permanently kommt statt 200 OK obwohl alles richtig ist.

    Allerdings ist das nicht mein Größtes Problem:
    Ich verstehe dieses Boost.Asio nicht, ich finde das die Doku sehr dürftig in meinen Augen ist, zu mindestens komme ich mit der Doku auf Boost nicht zurecht.

    Ich weiß, das man die GET / HTTP in POST datei.php HTTP umstellen kann, nur mir erschließt nicht, wie man dann die PHP datei gestalten soll, zusätzlich muss doch auch eine Rückmeldung kommen, sonst weiß man ja nicht was da passiert ist. Momentan stecke ich total fest. Ein Beispiel im Internet, das ein HTTP Post mit einer PHP Datei zeigt finde ich nicht...



  • @Lucius sagte in Eine Verbindung zur einer MySQL Datenbank sicher herstellen?:

    @Cardiac sagte in Eine Verbindung zur einer MySQL Datenbank sicher herstellen?:

    security through obscurity

    Wenn du meine Beiträge gelesen hättest, dann würdest du direkt verstehen, das mir es nicht um die Sicherheit beim Verschleiern geht,
    das habe sehr häufig geschrieben.

    Ich habe jetzt nochmal alles richtig durchgelesen, nachdem ich das erste mal nur alles ueberflogen habe, und kann keine stelle finden and der du explizit verhindern willst, dass jemand deinen code klaut. Der einzige hinweis bzgl. obfuscation war der gedanke access credits direkt in dein binary zu legen, sonst nichts.

    Dein moved permanently ruehrt daher, dass SO deinen http requests auf TLS upgraded.

    Ausserdem wuerde ich zu beast raten, wenn es - wenn auch aus den falschen gruenden - unbedingt C++ sein muss.


Anmelden zum Antworten