Client -> DB Server - Sicherheit

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Kaito90
User
Beiträge: 15
Registriert: Donnerstag 4. Juli 2013, 09:37

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
BlackJack

@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.
Kaito90
User
Beiträge: 15
Registriert: Donnerstag 4. Juli 2013, 09:37

Wie sieht das diesbezüglich mit der Sicherheit aus? Die SSH Daten sind dann in deinem Script rein programmiert?! Wenn das Script dann eventuell dekompiliert wird?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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?
Kaito90
User
Beiträge: 15
Registriert: Donnerstag 4. Juli 2013, 09:37

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.
BlackJack

@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.
Kaito90
User
Beiträge: 15
Registriert: Donnerstag 4. Juli 2013, 09:37

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?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Kaito90: die Vorteile eines Skriptes, das den Datenbankzugriff kapselt, sind eine genauere Rechtevergabe, Kapselung von der eigentlichen Datenhaltung, Verwendung komplexerer Funktionen, uvm.
BlackJack

@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.
Kaito90
User
Beiträge: 15
Registriert: Donnerstag 4. Juli 2013, 09:37

Das stimmt. Soweit habe ich gar nicht gedacht. :oops:

Vielen Dank für die Hilfe.
Antworten