JDBC via Netzwerk

Kiloui

Mitglied
Hey,
was Datenbankanbindungen angeht habe ich bisher nur im Bereich Webanwendungen Erfahrung. Und hier habe ich stets eine Server-Komponente geschrieben welche eine Verbindung zur DB herstellt und Daten aus der Datenbank ausliest um die anschließend für einen Client zur Verfügung zu stellen....

Wie ist das wenn eine Java-Desktopanwendung geschrieben wird und man mit der Anwendung über ein Netzwerk auf eine Datenbank die auf einem Server läuft zugreifen möchte ? Benötigt man in diesem Fall auch eine serverseitige Komponente ? Oder erlaubt es JDBC direkt über das Netzwerk eine Verbindung zur DB herszustellen und Daten abzufragen ?
 
zB. muss der DB-Server Zugriffe von "außen" erlauben.
Weiß ja nicht, was du vorhast, aber das ist bei zB. Webhostern eher nicht der Regelfall.
Bei Rootservern umstellbar, sonst Pech.

Dann muss das Javaclientprogramm Zugangsdaten zur DB drin haben.
Aus class/jar-Dateien kann man das leicht wieder rausholen,
dann könnte der Nutzer auch direkt SQL-Befehle abschicken.
...

Sicherheit der Datenübertragung wäre auch noch ein Punkt.
 
Es geht um nicht sicherheitskritische Informationen die dort übertragen werden. Und es ist ein sehr kleines Netzwerk (intranet kein Internet)....
 
Die genannten Punkte bleiben trotzdem.

Logindaten mitliefern + Gefahr von eigenen SQL-Queries.
Auf welche Tabellen etc. das Programm zugreifen darf ist zwar einstellbar (je nach DB),
aber wenn solange es in irgendeine Tabelle schreiben muss/darf kann man per SQL
auch selbst was eintragen.

Netzwerkverkehr: Verschlüsselt übertragen würde trotzdem keinen Schaden anrichten.

Und falls nicht schon so eingestellt muss der Server Zugriffe direkt von anderen Computern erlauben.
(Je nach DB-System unterschiedlich einstellbar).
Dafür braucht man eben entsprechende Zugriffsrechte oder die Mithilfe vom Zuständigen.
 
Wenn ich auch was zum Thema Sicherheit anmerken darf: Java besitzt ein Feature Namens keystore. Dort kann man Passwörter, die man für Datenquellen und dergleichen benötigt, ablegen. Das beste ist ohnehin, wenn man einen Datenbankserver hat, der z.B. ein sog. Single-Sign-On unterstützt. Dabei wird der an einer Domain (z.B. Active-Directory) angemeldete Benutzername für die Authentifizierung am Datenbank-Server verwendet (Kerberos-Ticket).

Was man auf jeden Fall tun sollte, ist, keinen administrativen Benutzer für die Anmeldung mit der Java-Anwendung zu verwenden. Dann kann der User maximal die Applikationsdatenbank zerschießen (von der man ohnehin täglich ein Backup macht).

Und natürlich ist Protokollierung der Datenbankzugriffe ein Muss!
 
Zurück