MySQL C/C++ Anwendungen mit mehr als einem Benutzer



  • habe also mingw runtimes installiert, jetzt

    1>c:\mysql32\include\stddef.h(6): fatal error C1021: Ungültiger Präprozessorbefehl "include_next".

    da fehlt hoffentlich nur eine lib/header? welche?



  • das macht so keinen Sinn ich kriege die Maschine nicht eingerichtet..
    Den Objektkatalog habe ich gefunden habe auch eine Mysql.data.dll gefunden kriege diese aber nicht mehr Entfernt (war in VS Ordner) und also auch die von Connector so wie es aussieht nicht dazu.
    Das ist komplett aus dem Ruder geraten, werde die Server und auch Entwicklungsumgebung wahrscheinlich alles wieder neu machen.



  • jucodument schrieb:

    welche Algorithmen das sind sagt also die Qualität aus, aber wenn die doch für jedermann zu sehen sind? Die Meinung von einem war ja das es dann zu einfach herauszufinden ist??

    Sehe es mal so: Wenn Du ein Schloss hast und Du weißt, wie es funktioniert, hast Du noch nicht den Schlüssel.

    Wenn Du prüfen kannst, wie das Schloss aufgebaut ist, kannst Du prüfen, ob es Sinnvoll aufgebaut ist und eventuell, ob es gut gemacht ist.

    Wenn Du ein Schloss hast, von dem Du nicht weißt, wie es funktioniert, dann kannst Du zwar prüfen, dass es mit dem mitgelieferten Schlüssel auf geht, aber kannst nicht prüfen, ob es nicht eventuell auch anders auf geht. Beispielsweise wenn Du ein Stück Draht rein steckst.

    Genauso ist das bei Verschlüsselung in Software. Ein Algorithmus, den Du kennst, gibt dir nicht lange nicht den Schlüssel. Wenn ich beispielsweise eine Passwortprüfung baue, die das Passwort einfach in der Datenbank nach schaut, dann kannst Du dich noch immer in mein System einloggen, wenn Du keinen Zugriff auf die Datenbank hast.

    Es geht sogar noch weiter. Der reine Algorthmus sagt schon mal einiges über die Qualität der Verschlüsselung aus. Ob der Algorithmus aber auch korrekt implementiert ist, kannst Du (bzw. ein Sicherheitsexpterte) nur prüfen, wenn Du den Source code hast.

    Eine closed-source-Applikation könnte bei einer Passwortprüfung ja beispielsweise auf ein fest codiertes Passwort prüfen, bevor es in den eigentlichen Verschlüsselungalgorithmus geht. Damit hat der Hersteller der Software immer eine Hintertür. Das geht bei Open-Source eben genau nicht.



  • Ich glaube ich bekomme die Schachtel langsam geöffnet.
    Das Passwort ist schon verschlüsselt und ein Algorithmus packt es wenn die Anwendung läuft aus.
    Mit dekompilieren kommt man dann nicht an den ganzen Code dran? Bei einer kleinen Anwendung fällt so eine Überlegung doch bestimmt ins Gewicht? :o



  • jucodument schrieb:

    Ich glaube ich bekomme die Schachtel langsam geöffnet.
    Das Passwort ist schon verschlüsselt und ein Algorithmus packt es wenn die Anwendung läuft aus.
    Mit dekompilieren kommt man dann nicht an den ganzen Code dran? Bei einer kleinen Anwendung fällt so eine Überlegung doch bestimmt ins Gewicht? :o

    Ich habe das Gefühl, du bekommst noch gar nichts geöffnet 🙄 .

    Du musst Algorithmus vom Schlüssel unterscheiden. Der Algorithmus sollte bekannt sein aber der Schlüssel nicht. Mit Dekompilierung hat das gar nichts zu tun.



  • Dabei verstehe ich genannte Vorgehensweise in dem Beispiel anscheinend noch nicht den verständlichen prinzipiellen Teil allerdings schon.
    Den Schlüssel findet man doch im Code wenn man ihn dekompilieren oder assemblieren kann? 🕶

    In meinem Beispiel gibts ohne Passwort keine Datenbank? Wenn ich auf ein System zugreife was meinst du damit? Deswegen dachte ich auch schon an Leitungen abhören oder so, was mich hier jetzt garnicht so interessieren soll.



  • Ach jetzt verstehe ich Dein Problem. Deine Applikation braucht das Passwort, um sich an der Datenbank anzumelden und Du glaubst, wenn Du das Passwort in der Applikation fest codierst und die Applikation compilierst, dann hättest Du eine höhere Sicherheit erreicht. Ist es das?

    Und ein weiteres Problem ist, dass Deine Fragen ein wenig kreativ formulierst. Versuche doch mal beispielsweise Deinen Satz:

    jucodument schrieb:

    Dabei verstehe ich genannte Vorgehensweise in dem Beispiel anscheinend noch nicht den verständlichen prinzipiellen Teil allerdings schon.

    in korrektes, oder zumindest verständliches Deutsch umzuformulieren. Dann können wir Dir vielleicht besser helfen.



  • Ja; ich frage mich noch wie. Man kann einen compilierten Code ja wieder in Maschinensprache übersetzen und ich frage mich: eine kleine Anwendung ist ein leichtes Ziel für jemanden der damit umgehen kann oder nicht.

    Okay da habe ich ein echtes Problem den Sinn in diesem Satz zu erfassen. Bin nicht sicher ob du ein "nicht" vergessen hast? Welches System ist gemeint?

    Ein Algorithmus, den Du kennst, gibt dir nicht lange nicht den Schlüssel. Wenn ich beispielsweise eine Passwortprüfung baue, die das Passwort einfach in der Datenbank nach schaut, dann kannst Du dich noch immer in mein System einloggen, wenn Du keinen Zugriff auf die Datenbank hast.



  • jucodument schrieb:

    Ja; ich frage mich noch wie. Man kann einen compilierten Code ja wieder in Maschinensprache übersetzen und ich frage mich: eine kleine Anwendung ist ein leichtes Ziel für jemanden der damit umgehen kann oder nicht.

    Okay da habe ich ein echtes Problem den Sinn in diesem Satz zu erfassen. Bin nicht sicher ob du ein "nicht" vergessen hast? Welches System ist gemeint?

    Ein Algorithmus, den Du kennst, gibt dir nicht lange nicht den Schlüssel. Wenn ich beispielsweise eine Passwortprüfung baue, die das Passwort einfach in der Datenbank nach schaut, dann kannst Du dich noch immer in mein System einloggen, wenn Du keinen Zugriff auf die Datenbank hast.

    Ja, dass Passwort fest ins Programm zu schreiben bringt nichts, was Sicherheit angeht. Solche Zeichenketten sind schnell zu finden. Das sicherste ist, wenn der Anwender das Passwort jedesmal eingeben muss und nicht gespeichert wird.

    Ansonsten das Passwort verschlüsselt speichern. Das Problem ist dann, dass die entsprechende Entschlüsselungsroutine in deiner Anwendung vorhanden sein muss.Sonst käme dein eigenes Programm ja auch nicht an das Passwort. Auch diese Entschlüsselungsroutine kann von einem Angreifer der Zugang zu dem Computer hat gefunden werden, wenn er den Code untersucht. So sind aber nicht gleich alle Instanzen deines Programms betroffen, sondern nur die wo der Angreifer wirklich Zugang zu hat, weil ja jeder Anwender ein anderes Passwort gewählt hat, welches er erst mit der geknackten Entschlüsselung berechnen muss.



  • Hallo, Danke ich bins und Mister X für die Antworten!
    Naja ich komme halt von PHP erst zu C, habe mir da auch alles selbst beigebracht.. also ich dachte nicht das es so ein Aufwand ist, stellte aber fest das so ein Netzwerkcode es ganzschön in sich hat. Das heißt solange man mit eigenen Funktionen arbeiten will braucht man ein richtiges, grundlegendes Verständnis davon. Soviel weiß ich nun schon.
    Habe ein bisschen Abstand von dem Projekt genommen da das ein echtes Problem zu sein scheint. Ebenfalls bin ich erstmal weg von Visual Studio und habe mir mit CodeBlocks etwas einfacheres installiert.
    Damit ich irgendwie erstmal lokal zur DB connecten kann, dafür brauche ich auch einen extra Thread den ich die Tage reinstellen möchte.

    Gedanklich sieht es so aus. Nehmen wir an der Quellcode ist nicht zugänglich aber ein Cracker assembliert den Code. Das Passwort des Benutzers (selbstausgesucht, er hat sich vorher auf einer Seite registriert) gibt es in der MySQL Tabelle auf die ich zugreifen möchte (das wieder mit Passwort, eben dem MySQL Passwort), damit hier ein eindeutiger Eintrag gemacht werden kann. Es geht um das MySQL Passwort das nur dem Admin bekannt sein sollte (logisch).


Anmelden zum Antworten