Autor Beitrag
Ebil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: So 21.12.08 16:03 
Hi Leute,
Ich habe vor ein einfaches spiel (ohne jegliche grafik, es ist nur ne kleine wirtschafts simulation auf textbasis) zu programmieren.
Das ganze soll multi-user fähig sein und auf einen server laufen, über den alle aktionen gehen und der sämtliche spieler daten speichert.
Das heisst der spieler meldet sich vorher an -> loggt sich ein und alle aktionen werden erst vom server geprüft.
Und hier liegt auch mein problem der sicherheit, was ist wenn der spieler mit einem einfachen memory editing prog. die speicehradresse für zb Geld ausließst und verändert? Was ist wenn er die packets aufnimmt für zb etwas verkauftes, und dieses ständig selbst abschickt?
Wie kann man soetwas verhindern? Die Indy komponenten habe ich, aber wie man soetwas sichern kann, weiss ich leider nicht.
Hoffe da gibts was zum lesen, bzw einfache kontrollen die der "server" dann durchführt, es muss keine ultimativ sichere lösung werden, so klein mein spiel ist, so relativ simple sicher soll die lösung sein ^^

Ebil
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 21.12.08 16:35 
user profile iconEbil hat folgendes geschrieben Zum zitierten Posting springen:
Das heisst der spieler meldet sich vorher an -> loggt sich ein und alle aktionen werden erst vom server geprüft.
Und hier liegt auch mein problem der sicherheit, was ist wenn der spieler mit einem einfachen memory editing prog. die speicehradresse für zb Geld ausließst und verändert? Was ist wenn er die packets aufnimmt für zb etwas verkauftes, und dieses ständig selbst abschickt?
Du hast es doch selbst gesagt: Der Server überprüft alle Aktionen.
Damit weiß der Server ja wie viel Geld der Spieler hat. Und eine Aktion wird auch nur angefordert. Ausführen muss sie der Server. Beim Client wird dann das Ergebnis angezeigt.

Beispiel:
Der Spieler hat eigentlich nur 100 Euro. Er manipuliert diese Angabe, so dass der Client denkt, er hätte 1000. Daraufhin wird der Client zulassen, dass die Aktion "kaufe den Fernseher für 999 Euro" ausgeführt wird.
Beim Server kommt diese an. Der weiß aber, dass nur 100 Euro vorhanden sind. Also führt er die Aktion nicht aus. Entweder wird dann beim Spieler nur eine entsprechende Meldung angezeigt oder der Spieler gleich gebannt o.ä. (wobei man bei letzterem sicher sein muss, dass dies nicht fälschlich passieren kann ;-)).

Egal was der Benutzer macht: Solange du die Clientdaten nicht beim Server ungeprüft übernimmst, kann da nicht viel passieren. Das einzige was passieren kann ist, dass jemand versucht automatisiert sehr viele Aktionen auszuführen. Dies kannst du ja durch Sperrzeiten verhindern. Also nicht, dass man immer eine Pause machen muss (das wäre lästig), sondern dass man nur x Aktionen in einer bestimmten Zeit machen kann.
Ebil Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: So 21.12.08 17:38 
Mhh... stimmt schon, daran hab ich garnicht gedacht.
Ich glaube ich werde erstmal anfangen und dann ankommen wenns wirklich probleme gibt ;P
danke

Ebil