[C/C++] Client-Server Anwendung - Thema: Sicherheit

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von bonsai, 15. Juli 2009 .

  1. 15. Juli 2009
    Client-Server Anwendung - Thema: Sicherheit

    Hi Leute!

    Kumpel von mir hatte eine Idee, die wir nun umsetzen wollen.
    Habe nun an euch ein paar Fragen wegen der Sicherheit der Anwendung.

    Es geht um eine Client-Server Anwendung:
    - 2 Programme (1x Client; 1x Server)
    - Client läuft lokal auf einem PC oder Laptop
    - Server läuft auf einem anderen PC oder evtl. Webserver

    Aufgabe vom Client:
    Im Client werden von verschiedenen Benutzern Werte eingegeben,
    welche an den Server (Datenbank) gesendet werden sollen.
    Außerdem sollen diese Werte vom Client auch abgefragt werden können.

    Aufgabe vom Server:
    Der Server soll im Prinzip eine Datenbank sein, in der alle Werte
    gespeichert werden und vom Client abrufbar sind.
    Dabei wird es Benutzer, Kennwörter und verschiedene Werte geben.

    ---
    Jetzt zu meinen Fragen:
    1. => Sollte ich sowas eher mit C++ umsetzen oder evtl. mit PHP als Web-Interface?
    2. => Welche der beiden Varianten wäre einfacher gegen Manipulation zu schützen?
    3. => Was muss ich jeweils beachten, um Daten bei der Übertragung zu "sichern"?
    ---

    Ich hoffe ihr habt ein paar hilfreiche Antworten für mich!
     
  2. 16. Juli 2009
    AW: Client-Server Anwendung - Thema: Sicherheit

    1. Wenn es keine MEGA-ANWENDUNG ist, dann würde ich PHP + MySQL empfehlen. Da lassen sich einfach viel schneller solche Anwendungen schreiben. C++ ist dafür einfach nicht ausgelegt. (imho)

    2. Wenn man stets auf die Sicherheit achtet und ein gutes Komnzept hat, dann können Daten auch nicht so schnell manipuliert werden. Da denke ich aber, dass man sich mit PHP besser schützen kann, da der Anwender nicht direkt nachstellen kann, was an der Server geschickt wird. (Server arbeitet das Script ab)
    Bei C++ könnte man schon eher Daten manipulieren. Sniffen ist ja keine große Kunst.
    Wenn man versucht viele Risikofaktoren auszuschließen, ist PHP wohl die bessere Wahl.

    3. siehe 2.

    greez

    //PS: Zur Sicherheit von Webanwendungen kann dir sicher das Webmaster-Forum mehr helfen
     
  3. 16. Juli 2009
    AW: Client-Server Anwendung - Thema: Sicherheit

    zu 1.: Genau diese Vermutung hatte ich im Prinzip auch. Habe selber schon Anwendungen in PHP geschrieben, die ich vorher in großem Umfang in C++ hatte.

    zu 2.: Ich glaube bei PHP ist der große Vorteil genau der den du erwähnt hast (Thema Sicherheit)
    => Server arbeitet das Script ab... <= daher wird es wohl wirklich PHP werden!

    Kannst du (oder jemand anderes) mal ein paar Beispiele dafür bringen?

    ---
    Soweit erstmal vielen Dank für deine Antwort!
    Wenn sich hier nichts weiter ergibt was für C++ spricht, werd ich das Thema wohl in der Webtechnik weiterführen.


    greetz
     
  4. 16. Juli 2009
    AW: Client-Server Anwendung - Thema: Sicherheit

    Bzgl sicherheit würde ich dir einfach raten, das ganze ip-range basiert zu machen, oder vielleicht sogar mac-basiert - so wie es einige ftp-daemons machen. Und wenn die ip nicht passt, lässt du den server einfach die verbindung refusen - da wirkt dann sogar der port bei nem portscan als geschlossen. Das macht natürlich nur sinn, wenn man eine übersichtliche zahl an client hat, erhöht die sicherheit jedoch immens. Ich denke aber auch bei 200-300 clients sollte das klappen. Zuerst überprüfen ob die ip, die connected generell einer der vielen ip ranges die du geadded hast entspricht, und danach user/pwd/wasauchimmer abfragen.

    1)
    Client -> ConnectServer()

    2)
    Server -> If InStr(Ranges,Client(iprange)) <> 0 Then -> Ask Pwd
    Else -> Connection Refused

    3)
    Client -> Send User/pwd

    4)
    Server -> Check user/pwd -> valid: Welcome!
    -> invalid: Bye bye.
     
  5. 16. Juli 2009
    AW: Client-Server Anwendung - Thema: Sicherheit

    In php is alles bis auf die eingabe tatsächlich server sided. In C++ kannst dir aussuchen was denn genau server sided und was client sided geschieht. Ich weiß jetzt nich was du genau machen willst aber PHP sollte bei kleinen dingen deutlich schneller zu schreiben sein. Bei C++ hast den vorteil dass du unbedenkliche Operationen ohne Verlust von Sicherheit auf dem Client ausführen kannst und dadurch den Server entlastest. Außerdem sollte dein eigener Server deutlich weniger Resourcen als eine PHP umgebung benötigen (sofern du dich nicht ganz dumm anstellst beim programmieren oO).

    Die Aussage das eine Lösung mit PHP grundsätzlich sicherer als C++ wäre halte ich für Blödsinn.
     
  6. 16. Juli 2009
    AW: Client-Server Anwendung - Thema: Sicherheit

    Hoi,

    PHP+MySQL wäre für den Server wirklich am besten, v.a. kann man den dann auch auf normalen Webspace laufen lassen. Wenn man den Server auch noch in C++ schreibt, bräuchte man ja ssh-zugang o.Ä.

    Zum Thema Sicherheit:
    Kommt es euch dadrauf an, dass keiner die Daten manipulieren soll, oder dass nur bestimmte Leute zugriff haben?
     
  7. 16. Juli 2009
    AW: Client-Server Anwendung - Thema: Sicherheit

    @razor90:
    Vielen Dank für die Links. Werd mir alles mal anschauen!

    @test@private.co:
    Sehr schöne Idee mit den Ip-Ranges!

    @tobZel:
    ... ich denk sowieso noch drüber nach, welche Variante ich wählen werde ^^

    - Es sollen nur registrierte (und freigeschaltete) User Zugriff haben.
    - Jeder User soll nur seine eigenen Daten einsehen können.
     
  8. 16. Juli 2009
    AW: Client-Server Anwendung - Thema: Sicherheit

    Bei PHP+MySQL besteht allerdings immer noch die Möglichkeit per SQL-Injection ziemlich viel kaputt zu machen, darauf müsstest du achten.
    Bei C++ kann so schnell nichts auf deinem Server passieren, ausser du sicherst den (dann sehr kleinen) server-basierten Teil nicht gut ab...
    Je nach dem ob du das ganze auf den Client oder den Server auslagern willst, würde ich C++ oder PHP nehmen.

    Mfg
    TuXiFiED
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.