Hallo,
ich arbeite gerade an einer Client Anwendung, die eine Verbindung zu einer Datenbank benötigt. Meine erste Idee war einfach mit dem Client auf die DB zuzugreifen. Jedoch müsste die DB dann nach außen offen sein und die DB Zugangsdaten sind in der Anwendung gespeichert. Das halte ich eigentlich für weniger sicher.
Stellt das ein zu hohes Risiko dar? Schreibt ihr dann noch ein Script auf dem DB Server, um die Daten vom Client aufzunehmen und dann in die DB zu speichern?
Vielen Dank
Kaito90
Client -> DB Server - Sicherheit
@Kaito90: Was heisst nach aussen offen? Üblicherweise sind Client und DB im gleichen Netzwerk. Falls nicht mache ich für gewöhnlich einen SSH-Tunnel für die DB.
Erklär doch mal worum es konkret geht. Was ist das für eine Datenbank? Was ist das für ein Script? Wer hat Zugriff auf das Script? Was sollen Leute mit Zugriff auf das Script machen dürfen? Was können sie (darüber hinaus) machen wenn sie Zugang zur Datenbank haben?
Ich plane ein kleines textbasiertes Spiel. Die Daten des Spielers werden in der Datenbank gespeichert. Jeder Spiel sieht die Daten der anderen Spieler.
Im Grunde genommen gehts in die Richtung eines Browsergame. Die Datenbank wird wahrscheinlich eine MySQL Datenbank und liegt dann auf einem Linux System.
Im Grunde genommen gehts in die Richtung eines Browsergame. Die Datenbank wird wahrscheinlich eine MySQL Datenbank und liegt dann auf einem Linux System.
@Kaito90: Den SSH-Tunnel erstelle ich ausserhalb vom konkreten Programm.
Wenn Du irgendwelche Zugangsdaten hast die der Benutzer nicht sehen soll, dann darfst Du die ihm nicht ausliefern. ”Kompilieren” hilft da nichts, wenn's auf dem Rechner des Benutzers ist kommt der da auch irgendwie ran wenn er will, denn spätestens für die Kontaktaufnahme mit der DB werden die Zugangsdaten ja irgendwie im Klartext in der Anwendung benötigt, und dann kann man die auch immer irgendwie abgreifen.
Wenn es ein Browsergame wird dann muss ja der Webserver auf die Datenbank zugreifen. Und der ist nicht beim Benutzer und er ist normalerweise auch im selben lokalen Netz wie der Datenbankserver.
Wenn Du irgendwelche Zugangsdaten hast die der Benutzer nicht sehen soll, dann darfst Du die ihm nicht ausliefern. ”Kompilieren” hilft da nichts, wenn's auf dem Rechner des Benutzers ist kommt der da auch irgendwie ran wenn er will, denn spätestens für die Kontaktaufnahme mit der DB werden die Zugangsdaten ja irgendwie im Klartext in der Anwendung benötigt, und dann kann man die auch immer irgendwie abgreifen.
Wenn es ein Browsergame wird dann muss ja der Webserver auf die Datenbank zugreifen. Und der ist nicht beim Benutzer und er ist normalerweise auch im selben lokalen Netz wie der Datenbankserver.
Mit dem Browsergame war ja nur ein Beispiel. Es soll auf jedenfall eine Clientanwendung werden. Es klingt so, als sei es besser die Daten an ein Script auf dem Server zu leiten und dieses Script schreibt es dann in die Datenbank. Oder irre ich mich hier?
@Kaito90: Bei so etwas hat man ja normalerweise einen Gameserver mit dem die Clients kommunizieren. Und der kann dann auch mit der Datenbank kommunizieren. Man will in einem Spiel ja eigentlich nicht SQL haben sondern eher auf einer höheren Ebene arbeiten. Dann kann dem Client zum Beispiel auch egal sein wie die Persistenz auf Serverseite eigentlich genau abläuft, also welche Art von Datenbank da beispielsweise verwendet wird. Fast immer läuft auch die Spiellogik auf dem Server denn man möchte ja nicht das Spieler schummeln können.