BC++ Projekt und sicherheit beim connecten zu MySQL und FTP



  • Also ich habe ein Programm geschrieben, dass zu FTP und MYSQL Server connected und dort Daten manipulieren kann.

    Die ist dabei eine Clientandwendund und ist sozusagen ein Content Manager, d.h. die benutzer sind z.B. Mitarbeiter des Projektes etc.

    Nun ist die Datenbank und recht groß und wichtig, weil in ihr wichitge Informationen und Webinhale gespeichert werden, die durch das Client Pogramm, ich nenne es fortan MyProg, verändert werden können.

    Das Client Programm selber besitzt ein Sicherheitssystem, also Login usw., bevor die Möglichkeit hat, Manipulationen verzunehmen. Die Login Informationen werden dabei wiederm aus einer MySQL Datenbank gelesen und verteilen je nach User, dem User rechte im Programm(Admin, Korrektor, Autor etc.).

    Nun zu meiner eigentlichen Frage/meinem Problem:

    1. Die Logininforamtionen des USERs sind ansich nicht von Spionageangriffen gestört, da ja so ein req. geschickt wird wie : "gibt es einen User mit diesen Logindaten" und nicht "hole alle user und prüfe". Der Admin jedoch hat die möglichkeit User zu verwalten, also requests nach zweiter Art.
    Wie kann ich diese "sensiblen" Daten verschlüsseln, das sie jemandem, der das Programm vllt mißbrauchen möchte, nicht in die Hände fallen.

    2. MyProg connected wie gesagt zu einem MySQL Server und einem FTP Server. Die Zugangsdate sind aus Sicherheitsgründen fest im Programmcode integriert(sinnvoll ?? andere Lösungen ??). Wenn das Programm nun aber zu dem Server connected, sagen wir Mysql, dann kann man durch Netwerk sniffer password und username des Zugangs recht Problemlos ausspionieren. Diese Zugangsdaten wären dann der goldene Schlüssel zur Datenbank, man könnte durch eine Datenbanktool auf die Datenbank connecten und die Inhalte sie schlicht löschen.
    Die möchte ich natürlich verhindern. Wie kann ich das am besten, besonders im Falle des Mysql Servers ?

    Lösungen ? :
    1. Also bei meiner Lösungssuche bin ich auf openSSL gestoßen, mit dem ich verbindungen verschlüsselne kann. Meine Frage, ob man den Server im Internet, der die Datenbank beherbegt, fest festlgen kann ist noch offen. Sprich ich möchte "man in the middle" attacken aus dem Weggehen, in dem jemand praktisch den Internetserver vorgaukelt, wartet auf den die Clientconnect und spioniert dann Zugangsdaten aus. Was ich also brauche ist eine möglichkeit, dass das Clientprogramm sicher feststellen kann, ob es unter der URL/IP ( festgelegt im Programm) den einen Server erreicht, den orig. Server sozusagen. Eine Art Authentifizierung oder ähnliches. Ich bin dabei auf ein paar Konzepte gestoßen, weiss aber nicht ab genau dies möglich ist.

    2. Rechteverwaltung in Mysql selber, d.h. der USER, der durch die Clientsoftware connected, hat bestimmte einschränkungen. Also in bestimmte Tabellen darf er nur schreiben, nicht löschen, nichts überschreiben. Bestimmte nur lesen etc.
    Dies wirft aber immer noch die Möglichkeit auf, zu manipulieren.

    Es handelt sich dabei um eine Projektverwaltungsoftware, d.h. der Client kann Projekte anlegen, files u diesem Projekt uploaden. Des weiteren kann dieses Projekt, wenn fertiggestellt, als "Datenblatt" online gestellt werden(In eine andere Tabelle geschrieben, die diese Daten für den zugriff über PHP->HTML bereithält. Diese Tabelle ist die wichtigste und muss sehr gut geschützt werden.

    Das ganze ist recht lang geworden, hoffe es stört keinen. Ich komme gerade einfach nicht weiter, hab schon viel gegoogelt und gelesen.

    Ein riesen Dank im vorraus

    EDIT: Ich denke dieser Thread gehört unter Pojekte, tut mir leid wenn er hier falsch ist(an den Forumadmin). Weiss selber nicht genau, wo man dies genau unterordnen kann 🙄



  • "Projekte" wäre passend, wenn du Mitstreiter suchen würdest.
    Da es dir aber, soweit ich das sehe, um die Diskussion eines Programmentwurfes geht, ist "Rund um" wohl besser geeignet.
    Ggf. solltest du die Überschrift nochmal anpassen (z.B. den expliziten Bezug auf den BCB entfernen).



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Kann mir keiner Helfen ?



  • 1. Die Logininforamtionen des USERs sind ansich nicht von Spionageangriffen gestört, da ja so ein req. geschickt wird wie : "gibt es einen User mit diesen Logindaten" und nicht "hole alle user und prüfe". Der Admin jedoch hat die möglichkeit User zu verwalten, also requests nach zweiter Art.
    Wie kann ich diese "sensiblen" Daten verschlüsseln, das sie jemandem, der das Programm vllt mißbrauchen möchte, nicht in die Hände fallen.

    beim Server irgendwie verchluesseln (GPG vielleicht?) und am Client wieder entschluesseln

    2. MyProg connected wie gesagt zu einem MySQL Server und einem FTP Server. Die Zugangsdate sind aus Sicherheitsgründen fest im Programmcode integriert(sinnvoll ?? andere Lösungen ??). Wenn das Programm nun aber zu dem Server connected, sagen wir Mysql, dann kann man durch Netwerk sniffer password und username des Zugangs recht Problemlos ausspionieren. Diese Zugangsdaten wären dann der goldene Schlüssel zur Datenbank, man könnte durch eine Datenbanktool auf die Datenbank connecten und die Inhalte sie schlicht löschen.
    Die möchte ich natürlich verhindern. Wie kann ich das am besten, besonders im Falle des Mysql Servers ?

    zu den fest integrierten Zugangsdaten: nicht im KLARTEXT im Quelltext speichern. Der Compiler schreibt zu Compilezeit feststehende Strings oft noch als Klartext in die .exe... d.h. wer deine Exe mit einem (Hex)-Editor oeffnet, koennte sie da rauslesen.... irgend eine leichte Verschluesselung sollte reichen

    . Also bei meiner Lösungssuche bin ich auf openSSL gestoßen, mit dem ich verbindungen verschlüsselne kann. Meine Frage, ob man den Server im Internet, der die Datenbank beherbegt, fest festlgen kann ist noch offen. Sprich ich möchte "man in the middle" attacken aus dem Weggehen, in dem jemand praktisch den Internetserver vorgaukelt, wartet auf den die Clientconnect und spioniert dann Zugangsdaten aus. Was ich also brauche ist eine möglichkeit, dass das Clientprogramm sicher feststellen kann, ob es unter der URL/IP ( festgelegt im Programm) den einen Server erreicht, den orig. Server sozusagen. Eine Art Authentifizierung oder ähnliches. Ich bin dabei auf ein paar Konzepte gestoßen, weiss aber nicht ab genau dies möglich ist.

    SSL ist eine gute (und sehr oft eingesetzte) Methode Verbindungen zu schuetzen. Vor Man in the Middle Angriffen koenntest du dich z. B. schuetzen indem dein Protokoll noch eine aufwaendigere Authentifizierung einbaut... z. B. noch bevor das Login vom Client zum Server uebertragen wird, muss der Server erst mal beweisen, dass er der Server ist... eine Signatur an den Client uebertragen, damit der Client den Server fuer vertrauenswuerdig haelt. Super waer z. B. eine sich dynamisch aendernde Signatur, damit sie auch beim Einsatz eines Sniffers nicht ersichtlich sind (z. B. schick immer PGP verschluesselt den aktuellen Timestamp vom Server zum Client, wenn der Client den timestamp decodiert und er ist noch 2 Minuten alt, dann schickt der Client auch das Login, sonst bricht er die Connection ab)...

    So, dass war jetzt mein Beitrag zum Thema, basiert aber zum Teil nur auf Halbwissen. Sprich: ich hab selbst nie etwas in der Art gemacht, aber vielleicht hilfts dir trotzdem 🙂


Anmelden zum Antworten