Sichere Datenbankverbindung mit Java

Hey liebe Community!
Ich habe eine Frage bezüglich An-/Abfragen mittels Java an einer SQL-Datenbank.
Und zwar will ich ein Programm schreiben, was jeden der einen eingetragenen Account in einer Datenbank hat, dazu berechtigt Daten von der Datenbank auszulesen und in sie einzuspeichern.
Bis jetzt habe ich die An-/Abfragen direkt aus Java mittels der java.sql-library ausgeführt, mir wurde jedoch gesagt dies sein unsicher. Ist es besser dies mittels php-skripts zu bewerkstelligen, oder wie macht man das in der Praxis?

Lieben Dank schonmal! =)
*Jonas

Das Unsichere an Deiner Variante ist, dass die Datenbank direkt erreichbar sein muss. Ein Nutzer Deines Programms kann es auseinander nehmen, die Zugangsdaten rausziehen und dann beliebige Abfragen an die Datenbank absetzen. Je nachdem, wie sorgfältig du bei der Rechtevergabe der DB warst, kann er mehr oder weniger Schaden anrichten (fremde Daten auslesen, Daten löschen/manipulieren bis hin zu das ganze Schema droppen). Da es dagengen keinen 100% wirksamen Schutz gibt, setzt man vor die Datenbank eine serverseitige Anwendung (gerne Java, PHP geht auch, .NET natürlich auch). Da diese auf einem Server läuft, bleiben die Zugangsdaten zur DB sicher verborgen. Und der Nutzer kann nur die Abfragen absetzen, die Du in der Anwendung implementiert hast.

Also:

  1. Client sendet An-/Abfrage an Server
  2. Auf Server befindet sich eine (in meinem Fall) Java-Anwendung, die die An-/Abfrage bearbeitet
  3. Anwendung auf Server gibt Rückmeldung an den Client.

So läuft das ab?
Also Clientseitig reines Java?

Wenn ja, hat jemand eine Anleitung, ein Tutorial oder ein Buch, was mir dabei hilft, die Kommunikation zwischen Client und Serveranwendung zu klären?

Auf Serverseite kann ich also getrost die java.sql-Library benutzen, oder?

Lieben Dank!

Auf Serverseite kann ich also getrost die java.sql-Library benutzen, oder?

Ja, entweder mit OR-Mapping Framework wie Hibernate oder EclipseLink oder auch plain JDBC.

Also Clientseitig reines Java?

Kann, muss aber nicht. Bei sowas denkt man oft auch an z.B. Webclients.

Die Kommunikation an sich ist nicht schwierig. Musst dich halt zwischen TCP und UDP entscheiden.
Als erstes würde ich so ne Art Handshake machen. Also Client fragt an. Server gibt public AES key zurück und du übermitelst verschlüsselt die Anmeldedaten die der Nutzer eingegeben hat. Dann setzt du in ne Extra db ne session key wo der benutzer mit irgend einer zufälligen Zeichenfolge verknüpft wird. Dann sendest du halt Daten aus der db.

Grüße

Im Prinzip das Selbe wie die Abfrage deines Wlan keys :slight_smile:

Was soll dass denn damit zutun haben, bis auf das, dass Daten vom DHCP server an.den client geschickt werden?

Grüße